You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:12:48