我做了一个从String中删除一些标点符号的方法,但是它只是返回参数w /包含的标点符号中传递的单词,有人能发现什么是错的吗?
public static String removePunctuation(String word) {
if (word.charAt(0) >= 32 && word.charAt(0) <= 46) {
if(word.length() == 1){
return "";
} else {
return removePunctuation(word.substring(1));
}
} else {
if(word.length() == 1){
return "" + word.charAt(0);
} else {
return word.charAt(0) + removePunctuation(word.substring(1));
}
}
}//end method
答案 0 :(得分:4)
我使用输入运行了您提供的代码:
h.ello
并获得输出hello
我在这里看到了一个功能齐全的方法。我假设您要删除的标点符号不是您在if语句中提供的ASCII范围的一部分。根据图表检查ASCII值。
ASCII values chart to compare with
没有包含正确值的输入:
h[ello
将返回输出h[ello
,因为[
是ASCII值91,超出了您提供的范围:
>= 32 && <= 46
答案 1 :(得分:1)
您的算法没有任何问题。很可能你的范围(32-46)不包括你想要删除的所有标点符号。例如,?
为63,因此不会被删除。