1

我想忽略大写/小写、标点符号和空格。这是我要调用它的代码:

public static boolean isPal(String s)
{
    if(s.length() == 0 || s.length() == 1)
        return true;
    if(s.charAt(0) == s.charAt(s.length()-1))
        return isPal(s.substring(1, s.length()-1));
    return false;
} 
4

3 回答 3

5

您可以尝试添加以下行:

s = s.toLowerCase().replaceAll("[\\p{Punct}\\s]", "");

在方法的开始。

于 2013-02-10T16:48:58.827 回答
1

最简单的方法是将字符串转换为小写或大写并进行所有比较,例如

public static boolean isPal(String s)
    {

        s = s.toLowerCase().replaceAll("[^a-z]", "");

        // Or if you want to allow digits
        //s = s.toLowerCase().replaceAll("[^\\w]", "");


        // Do all your comparisons
    } 
于 2013-02-10T16:48:25.900 回答
1

您可以将字符串转换为任何一种情况并将其用于处理 -

public static boolean isPal(String s) {
    s = s.toLowerCase(); // or  s.toUpperCase()

    if(s.length() == 0 || s.length() == 1)
        return true;
    if(s.charAt(0) == s.charAt(s.length()-1))
        return isPal(s.substring(1, s.length()-1));
    return false;
} 

并且忽略标点符号的使用可以使用下面给出的正则表达式。添加更多您需要忽略的字符并使用反斜杠对其进行转义\

[?:\\/\.]

将其添加到replaceAll() 方法中以替换为空。

于 2013-02-10T16:55:37.750 回答