比如一个字符串,里面有非法字法,假设:"*?/|\:'<>"这些字符为非法字符,我如何用正则把它们替换为空呢?
如:String startstr = "aa*?/|cc\:'<>bb";
转化结果为:Strng endstr = "aaccbb";我用:endstr = startstr.replaceAll("*?/|\:'<>", "");
这样当然不对了,里面的表达式怎么写呢(红色部分)?
感觉挺简单了,可没写对,请教各位了.(注:答案仅限正则方法,其它的如一个个判断再替换就不用说了,谢了)
如:String startstr = "aa*?/|cc\:'<>bb";
转化结果为:Strng endstr = "aaccbb";我用:endstr = startstr.replaceAll("*?/|\:'<>", "");
这样当然不对了,里面的表达式怎么写呢(红色部分)?
感觉挺简单了,可没写对,请教各位了.(注:答案仅限正则方法,其它的如一个个判断再替换就不用说了,谢了)
endstr = startstr.replaceAll("\\p{Punct}", "");
是下面这样吗?
public static void main(String[] args){
String startstr = "aa*?/|\\cc:'<>bb"; String endstr = startstr.replaceAll("\\p{*?/|\\:' <>}", ""); //出错
System.out.println(endstr);
}这样会报错,不行的.
如果要把空格之类的字符也去掉的话
String endstr = startstr.replaceAll("[\\p{Punct}[\\s]]", "");
public static void main(String[] args) {
String str = "aa*?/|cc\\:' <>bb";
String strTemp=str.replaceAll("(/)|(\\*)|(\\?)|(\\|)|(<)|(>)|(:)|(\\')|( )|(\\\\)", "");
System.out.println(strTemp);
}
aaccbb
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]