Dart中如何移除字符串内所有包裹整数的方括号及内部内容
Dart 移除字符串中包裹整数的方括号及内容解决方案
问题根因
你之前使用的正则(?:_|[^\w\s])+仅会匹配非字母、数字、下划线、空白的字符,方括号会被匹配移除,但括号内的数字属于\w匹配范畴,所以会被保留,最终导致输出不符合预期。
修正后实现代码
String s = "Hello, world![1] i am 'foo' [100]"; // 匹配所有方括号包裹整数的结构并替换为空 print(s.replaceAll(RegExp(r'\[\d+\]'), ''));
正则规则说明
\[:转义匹配左方括号(方括号是正则特殊字符,必须加反斜杠转义才能匹配字面量)\d+:匹配1个及以上的连续数字,覆盖任意长度的整数值场景\]:转义匹配右方括号
运行输出
Hello, world! i am 'foo'
如果需要同时处理替换后可能出现的多余连续空格,可以再加一步空格规整处理:
String s = "Hello, world![1] i am 'foo' [100]"; String result = s.replaceAll(RegExp(r'\[\d+\]'), '').replaceAll(RegExp(r'\s+'), ' ').trim(); print(result);
内容的提问来源于stack exchange,提问作者DolDurma
相关产品推荐
相关产品推荐

