You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用正则表达式如何安全提取字符串中括号内的内容

括号内文本提取实现方案

你给出的示例为Kotlin语法,以下提供几种不需要正则、无索引越界风险、可读性更高的实现:

方案1:极简语义化写法(最推荐)

直接用Kotlin内置的字符串截取函数,语义和需求完全匹配:

val s = "123 some address (Latitude 100, Longitude 500)"
val content = s.substringAfter('(').substringBeforeLast(')')

说明:substringAfter('(') 会拿到左括号之后的全部内容,再调用substringBeforeLast(')') 会去掉最后一个右括号及之后的内容,一步得到目标文本,不需要手动计算索引,逻辑直观易懂。

方案2:显式索引写法(逻辑最清晰)

如果希望更直观展示索引计算逻辑,可以用这种写法:

val s = "123 some address (Latitude 100, Longitude 500)"
val leftBracketIndex = s.indexOf('(')
val rightBracketIndex = s.lastIndexOf(')')
val content = s.substring(leftBracketIndex + 1, rightBracketIndex)

说明:substring的第二个参数是开区间,刚好不需要额外裁剪末尾字符,比你目前先截取前半段再删除末尾字符的写法逻辑更连贯。

可选容错增强版本

如果后续需要兼容字符串不存在括号的场景,可以加简单判断避免异常:

val content = s.indexOf('(').takeIf { it != -1 }?.let { leftIdx ->
    s.lastIndexOf(')').takeIf { it > leftIdx }?.let { rightIdx ->
        s.substring(leftIdx + 1, rightIdx)
    }
} ?: "" // 无匹配括号时返回空字符串

内容的提问来源于stack exchange,提问作者Blankman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:09:00