Kotlin使用正则\], \[调用split函数拆分字符串未获得预期结果
问题原因
- Kotlin 中
String.split的字符串类型参数默认按字面量精确匹配,不会解析为正则表达式。你传入的"\\], \\["转义后字面量为\], \[,和待拆分字符串中实际存在的], [分隔符不匹配,因此无法完成拆分,得到的列表长度始终为1。 - 若要使用正则规则拆分,必须显式传入
Regex类型参数,否则不会触发正则匹配逻辑。
解决方法
方案1:按固定字面量拆分(不需要正则能力)
如果分隔符格式固定就是], [,直接传入对应字面量即可,不需要额外加转义反斜杠:
val splittedList: List<String> = userProgramValue.split("], [")
方案2:正则拆分(兼容分隔符前后的空白、换行)
如果分隔符前后可能存在换行、多余空格,使用正则匹配更稳妥,正则规则匹配]+任意空白+逗号+任意空白+[的格式:
val splittedList: List<String> = userProgramValue.split(Regex("\\]\\s*,\\s*\\["))
拆分后可通过简单处理得到你预期的无首尾括号的内容:
val processedList = splittedList.map { it.removePrefix("[").removeSuffix("]").trim() }
内容的提问来源于stack exchange,提问作者bhaisun
相关产品推荐
相关产品推荐

