我正在尝试替换字符串中的字符
for (String word : stringArray){
int k = 33;
char d ="";
while (k < 64){
char c = k;
word = word.replace(c, ""); // THIS LINE GIVES AN ERROR
k++;
}
}
我试图摆脱ASCII id 32(!)和ASCII id 64(@)之间的所有非字母字符,包括在内。我使用stringid.replace(char, char)
作为suggested here。
然而,在replace的第二个参数中的""
被视为Eclipse中的一个字符串,它将错误称为“类型不匹配”(因为replace需要两个都是字符的参数)。
我尝试过''
而不是""
,但这似乎无法解决问题。我该怎么办?提前谢谢。
编辑:将word.replace(c, "");
更改为word = word.replace(c,"");
。感谢评论者指出这一点。但是,问题仍然存在。
答案 0 :(得分:2)
您必须更改相当多的代码才能使其正常工作:
for (int i = 0; i < stringArray.length; i++) {
int k = 33;
while (k < 64){
stringArray[i] = stringArray[i].replace("" + k, "");
k++;
}
}
关键点是:
答案 1 :(得分:1)
为什么不将所有想要替换的字符放在单独的字符串中并使用正则表达式将它们全部替换为字符串?
String charsToBeReplaced = "[!\"#$%&'()*+,-.\\/0123456789:;<=>?@]"; //your ASCII 33 to 64 characters... notice that forward slash and double quotes is escaped here
for (int i=0; i<stringArray.length; i++){
stringArray[i] = stringArray[i].replaceAll(charsToBeReplaced, "");
}
答案 2 :(得分:1)
使用正则表达式提出另一个答案:
Pattern p = Pattern.compile("[\\x21-\\x40]");
for (int i=0; i<stringArray.length; i++){
stringArray[i] = p.matcher(stringArray[i]).replaceAll("");
}
这可能比Raman Sahasi's answer更有效,因为我们只需要编译一次模式。