Kotlin中如何仅分割作为键值对分隔符的|字符
Kotlin中正确分割含特殊|的键值对字符串
直接用带正向预查的正则表达式来分割,就能避开value中带空格的|,只分割分隔不同键值对的|:
val input = "test=hey|test2=hey | hey|test3=hey | hey | hey|test4=|test5=bye" val splitResult = input.split(Regex("""\|(?=\w+=)""")) // 输出验证 splitResult.forEach { println(it) }
正则说明
\|:匹配字面量的|(正则里|是特殊元字符,必须转义)(?=\w+=):正向预查,确保当前匹配的|后面紧跟的是「一个或多个字母/数字/下划线(对应键名)+ 等于号」,这样就只会识别分隔不同键值对的|,不会误分割value里带空格的|。
执行后输出结果完全符合需求:
test=hey test2=hey | hey test3=hey | hey | hey test4= test5=bye
如果你的键名可能包含下划线以外的特殊字符(比如连字符),可以把正则里的\w+替换成更贴合的规则,比如[a-zA-Z0-9_-]+来兼容带连字符的键名。
内容的提问来源于stack exchange,提问作者MrAndre
相关产品推荐
相关产品推荐

