ket*_*iwu 6 regex dart flutter
我想从字符串中删除所有特殊符号,并且在字符串中只有单词,我尝试过此操作,但仅给出相同的输出
main() {
String s = "Hello, world! i am 'foo'";
print(s.replaceAll(new RegExp('\W+'),''));
}
Run Code Online (Sandbox Code Playgroud)
输出:Hello, world! i am 'foo'
预期:Hello world i am foo
Sur*_*gch 16
我发现这个问题在寻找如何从字符串中删除一个符号。对于来到这里想要这样做的其他人:
final myString = 'abc=';
final withoutEquals = myString.replaceAll(RegExp('='), ''); // abc
Run Code Online (Sandbox Code Playgroud)
从字符串中删除字符“,”:
String myString = "s, t, r";
myString = myString.replaceAll(",", ""); // myString is "s t r"
Run Code Online (Sandbox Code Playgroud)
第一个解决方案
s.replaceAll(RegExp(",|!|'"), ""); // The | operator works as OR
Run Code Online (Sandbox Code Playgroud)
第二种解决方案
s.replaceAll(",", "").replaceAll("!", "").replaceAll("'", "");
Run Code Online (Sandbox Code Playgroud)
有两个问题:
'\W'
不是有效的转义序列,要在常规字符串文字中定义反斜杠,您需要使用\\
或使用原始字符串文字(r'...'
)\W
正则表达式模式匹配不是单词char的任何char,包括空格,您需要对单词和空格类使用否定的字符类[^\w\s]
。使用
void main() {
String s = "Hello, world! i am 'foo'";
print(s.replaceAll(new RegExp(r'[^\w\s]+'),''));
}
Run Code Online (Sandbox Code Playgroud)
输出: Hello world i am foo
RegExp类的文档指出,如果您要以这种方式构造正则表达式,则应使用原始字符串(以r
,如前缀的字符串文字r"Hello world"
)的形式。在使用转义符时,这尤其必要。
另外,您的正则表达式也会捕获空格,因此您需要对其进行修改。您可以RegExp(r"[^\s\w]")
改用-匹配任何非空格字符或单词字符
归档时间: |
|
查看次数: |
5961 次 |
最近记录: |