我需要一个像这样的数组:
String [] x = {",",".",":",";","&","?","!","(",")"};
但是对于这些字符,它不能正常工作:“。”,“?” ,“(”,“)”。 当我尝试将它们替换为字符串时:
String z = "Hell&o Wor.ld!";
for(int i=0; i<x.length; i++){
if(z.contains(x[i])){
System.out.println(z.replaceAll(x[i],""));
}}
不适用于这四个字符。我该如何解决?
答案 0 :(得分:2)
replaceAll
使用这些字符的正则表达式解释,因此您需要对其进行转义。为了字符串解析器,您还需要转义反斜杠:
String [] x = {",", "\\.", ":", ";", "&", "\\?", "!", "\\(", "\\)"};
由于这里也有转义字符,因此您需要更改包含检查以仅检查匹配字符串中的最后一个字符:
String z = "Hell&o Wor.ld!";
for(int i=0; i<x.length; i++) {
if( z.contains( x[i].substring(x[i].length() - 1) )) { // if z contains last char of x
System.out.println(z.replaceAll(x[i],""));
}
}
答案 1 :(得分:1)
原因:String.replaceAll
以正则表达式为第一个参数,
在Java regex语法.?()
中是特殊字符
转义它们:
String[] x = {",", "\\.", ":", ";", "&", "\\?", "!", "\\(", "\\)"};
但是条件不再起作用,您需要类似
if (z.matches(".*" + x[i] + ".*")) {
System.out.println(z.replace(x[i], ""));
-