替换除“ \”和“。”以外的所有特殊字符。

时间:2018-07-11 10:17:57

标签: java regex regex-group

我在Java中有一个String,带有这样的特殊字符

String string = "Report created with id: [2748], generator:file,
 filename:C:\Users\username\AppData\Local\Temp\UnitTestEncryption.csv.pgp"

我需要像上面这样修改String

"Report created with id 2748 generator file
     filename C \Users\username\AppData\Local\Temp\UnitTestEncryption.csv.pgp"

用简单的语言,我需要替换除反斜杠“ \”和句点“”之外的所有特殊字符。 我已经检查过此link

但这对我不起作用,特别是对于反斜杠('\')。

4 个答案:

答案 0 :(得分:1)

一种简单的方法是遍历字符串,并使用所需的所有字符创建新的字符串。

String original="SOME TEXT";
String newStr="";

for(int i=0;i<original.length();i++){
    char ch=original.charAt(i);
    if(Character.isLetter(ch) || Character.isDigit(ch) || ch=='\\' || ch=='.'){
       newStr+=ch;    
      }else {
       newStr+=" "; 
     }
}

答案 1 :(得分:0)

您可以创建带有特殊字符的字符串

String special = "&^#@$*" //what you think is special char. 

之后,取字符串的每个字符并与特殊字符进行比较。

String myString;

for(int i = 0; i < myString.length; i++){

    if( special.contains( myString.charAt(i) + "" ) ){

         //TODO

    }
}

答案 2 :(得分:0)

string = string.replaceAll("[^a-zA-Z0-9\\\\.]", " ");

只需完成所有您不想替换的课程即可。

您可以添加-和_例如:

string = string.replaceAll("[^a-zA-Z0-9\\\\._-]", " ");

答案 3 :(得分:-1)

您可以在下面的列表中添加所有可以接受的内容,并删除其余字符:

 string = string.replaceAll("[^a-zA-Z0-9\s\\.\\\\]+", " ");