Dart字符串处理:如何移除非指定字符?正则替换参数求助
字符串过滤:保留指定字符并移除符号
问题描述
需要移除字符串中的符号,仅保留日文平假名、汉字、罗马字母等符合指定正则规则的字符。现有正则表达式如下:
var reg = RegExp( r'([\u3040-\u309F]|\u3000|[\u30A1-\u30FC]|[\u4E00-\u9FFF]|[a-zA-Z]|[々〇〻])');
不清楚在text=text.replaceAll(?, "");的问号位置应填入什么内容。
示例:
输入:「私は、アメリカに行きました。」、'I went to the United States.'
期望输出:私はアメリカに行きましたI went to the United States
解决方案
当前正则是匹配需要保留的字符,但replaceAll需要匹配要移除的字符,因此要将正则改为反向匹配(匹配所有不在允许范围内的字符),替换为空即可。
修改后的代码
// 定义匹配所有需移除字符的正则 var reg = RegExp(r'[^\u3040-\u309F\u3000\u30A1-\u30FC\u4E00-\u9FFFa-zA-Z々〇〻]'); // 替换所有匹配到的字符为空 text = text.replaceAll(reg, "");
关键说明
[^...]是正则的取反语法,表示匹配所有不在括号内的字符- 将原正则中允许的所有字符合并到一个字符集内,简化结构,避免多分支的
|写法 - 执行后,所有不在允许列表的符号(如「、。」'等)都会被移除,仅保留目标字符
内容的提问来源于stack exchange,提问作者wasa-bi
相关产品推荐
相关产品推荐

