Java替换字符
这很简单,但是我如何创建一个正则表达式来除去除Java替换字符,java,regex,Java,Regex,这很简单,但是我如何创建一个正则表达式来除去除 字母a-Z 数字0-9 逗号呢 我认为前两个的正则表达式是[^a-zA-Z_0-9],但我怎么能在其中添加逗号呢 还有,会是以下情况吗 "string".replaceAll("expression", null); 不,你应该: value = "string".replaceAll("[\\W_,]", ""); 我的模式不使用否定 您应该将其替换为空字符串,而不是null,并且必须将结果分配给字符串,因为字符串是不可变的 你可以把你的
- 字母a-Z
- 数字0-9
- 逗号呢李>
[^a-zA-Z_0-9]
,但我怎么能在其中添加逗号呢
还有,会是以下情况吗
"string".replaceAll("expression", null);
不,你应该:
value = "string".replaceAll("[\\W_,]", "");
我的模式不使用否定
您应该将其替换为空字符串,而不是null
,并且必须将结果分配给字符串,因为字符串是不可变的
你可以把你的正则表达式简化成我的正则表达式
否则,只需将,
添加到否定字符类。- 您可以简单地将逗号添加到
- 此外,字符串是不可变的,因此
不会影响原始字符串,而是使用替换的字符创建一个新字符串,因此您需要将其存储在某个位置(可能参考原始字符串)replaceAll
- 最后一件事是您需要传递空字符串
作为替换,而不是“
李>null
yourString = yourString.replaceAll("[^a-zA-Z0-9,]","");
另一件事是,您当前使用的regex还阻止删除
。
。如果这是有意的,那么您可以使用预定义的字符类\w
(在Javas字符串中,它需要写成“\\w”
,因为\
需要转义),而不是
),这样您的代码看起来就像
yourString = yourString.replaceAll("[^\\w,]","");
首先,替换值不能使用null
。它将为您提供java.lang.NullPointerException
。你必须在那里使用字符串。例如,不要使用空的“
”,而要使用空的
关于正则表达式,如果需要在角色类中添加任何内容,只需将它们添加到那里即可。例如[^a-z,*.]
此外,您的a-zA-Z_0-9
可以替换为\\w
[^\\w,]
[\w,]+
是匹配字母数字、下划线和逗号的正则表达式
这里的\w
相当于[A-Za-z0-9.]
[\W,]+
是一个正则表达式,它匹配除字母数字、下划线和逗号之外的所有内容
此处\W
-匹配任何非单词字符(字母数字和下划线)的字符,该字符等同于[^a-Za-z0-9.
在方括号中添加逗号。例如[^a-z,]是否也要阻止删除\uu
?如果不是,那么为什么它在你的[^a-zA-Z_0-9]
regex中?\\w
包含
而不是OP想要的。@p OP的例子中\uz
中的血球存在。字母a-Z,数字0-9和逗号
我看不到任何阻止
被替换的东西。关于是否应该包含u,这个问题有点含糊不清。这是OP的尝试,但不是描述。这种模糊性体现在Pshemo自己的回答中。@DavidWallace是的,我刚刚意识到OP regex中有。
,而他的要求中没有提到它。我怀疑OP刚刚在某处发现了这个带有\uu
的正则表达式,并使用了它,因此处理\u
可能不是故意的。
[^\\w,]