用Single字符替换多次出现的Special字符

时间:2017-03-13 06:12:02

标签: java regex replace

我想用Underscore替换Special character。我面临的问题不是用单个下划线替换,而是出现了2个下划线。以下是我的代码。

String string = "Sathesh, Soundar";
System.out.println(string.replaceAll("[,\\s]","_"));

这里我的输出为Sathesh__Soundar。而不是这个,我想得到Sathesh_Soundar。如果我有更多的继续特殊字符,一切都应该用单个下划线替换。

3 个答案:

答案 0 :(得分:3)

首先,您需要定义什么是特殊字符。我假设您将其定义为 - 除字母数字之外的所有字符。那么正则表达式应该是[^a-zA-Z0-9]+

此正则表达式解释为here

然后代码应该如下

String string = "Sathesh, Soundar";
System.out.println(string.replaceAll("[^a-zA-Z0-9]+","_"));

答案 1 :(得分:1)

尝试使用此

s.replaceAll("[^\\w\\d]+", "_");

答案 2 :(得分:-1)

使用单个下划线删除','后的空格,以获得所需的输出。

 String string = "Sathesh,Soundar"; //prints Sathesh_Soundar