Dart正则分割字符串问题:如何实现预期的分割结果?
问题分析
你当前用的正则,[a-zA-Z]会匹配逗号+字母的组合,而split方法会把整个匹配到的内容作为分隔符剔除掉,所以后面的单词首字母(比如Hello的H、world的w)会跟着逗号一起被删掉,导致结果里出现ello、orld这种缺失首字母的情况。
解决方案
改用**正向预查(前瞻断言)**来写正则,只匹配「后面紧跟字母的逗号」,但不会消耗那个字母。调整后的正则是:
,(?=[a-zA-Z])
这个正则里的(?=[a-zA-Z])是正向预查,它只会检查逗号后面是否是字母,不会把那个字母包含在分隔符里,所以split时只会删掉符合条件的逗号,保留后面的字母。
验证结果
用这个正则分割原字符串abc,Hello, 123,world,得到的结果正好是:
abc Hello, 123 world
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

