java删除标点符号递归方法

时间:2014-04-01 00:29:14

标签: java recursion methods call

我做了一个从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

2 个答案:

答案 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,因此不会被删除。