在Dart和Flutter中如何将多个连续空格替换为单个空格
Dart 连续多空格替换为单空格的实现方案
报错原因
Dart与Python的join方法逻辑存在差异:Python中join是字符串类的方法,入参为待拼接的可迭代对象;Dart中join是列表类的方法,入参为拼接用的分隔符,二者调用顺序完全相反。
实现方式
- 方式1:沿用分割后拼接的思路,调整调用顺序即可
// 从TextField拿到的输入字符串 String myString = TextFieldController.text; // 按任意空白字符分割后用单空格拼接,可同时处理空格、制表符、换行等连续空白 String result = myString.split(RegExp(r'\s+')).join(' '); // 如果仅需要处理空格,不需要匹配其他空白符,可替换为如下写法 String result = myString.split(' ').where((str) => str.isNotEmpty).join(' ');
- 方式2:直接用正则替换,写法更简洁
// 匹配2个及以上的连续空白,替换为单个空格 String result = myString.replaceAll(RegExp(r'\s{2,}'), ' '); // 仅匹配连续空格的写法 String result = myString.replaceAll(RegExp(r' {2,}'), ' ');
补充说明
如果需要同时去除输入字符串首尾的冗余空格,可在处理前调用trim()方法:
String result = myString.trim().replaceAll(RegExp(r' {2,}'), ' ');
内容的提问来源于stack exchange,提问作者Mithson
相关产品推荐
相关产品推荐

