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,]