Java,检查字符串是否为回文。不区分大小写

Java,检查字符串是否为回文。不区分大小写,java,string,compare,Java,String,Compare,如果字符串是回文,我想编写一个java方法来返回true Doc, note, I dissent. A fast never prevents a fatness. I diet on cod. 以下是我到目前为止的情况: String palindrome = "..."; boolean isPalindrome = palindrome.equals( new StringBuilder(palindrome).reverse().toString()); 我的问题是它没有考虑

如果字符串是回文,我想编写一个java方法来返回true

Doc, note, I dissent. A fast never prevents a fatness. I diet on cod.
以下是我到目前为止的情况:

String palindrome = "...";
boolean isPalindrome = palindrome.equals(
   new StringBuilder(palindrome).reverse().toString());
我的问题是它没有考虑一个词:<代码>赛车>代码>是回文。< /P>
Doc, note, I dissent. A fast never prevents a fatness. I diet on cod.
测试这是否是回文、不区分大小写且忽略标点符号的最佳方法是什么。

试试这个

public static void main(String[] args) {

    boolean notPalindrome = false;
    String string = "Doc, note, I dissent. A fast never prevents a fatness. I diet on cod";

    string = string.replaceAll("[^a-zA-Z]+","").toLowerCase();

    char[] array = string.toCharArray();
    for(int i=0, j=array.length-1; i<j; i++, j--) {
        if(array[i] != array[j]) {
            notPalindrome = true;
            break;
        }
    }
    System.out.println(string + " is palindrome? " + !notPalindrome);
}
publicstaticvoidmain(字符串[]args){
布尔值notPalindrome=false;
String String=“医生,注意,我不同意。禁食不能防止肥胖。我以鳕鱼为主食”;
string=string.replaceAll(“[^a-zA-Z]+”,”).toLowerCase();
char[]数组=string.toCharArray();

对于(inti=0,j=array.length-1;i使用此正则表达式删除所有标点和空格,并将其转换为小写

String palindrome = "..." // from elsewhere
boolean isPalindrome = palindrome.replaceAll("[^A-Za-z]", "").toLowerCase().equals(new StringBuilder(palindrome.replaceAll("[^A-Za-z]", "").toLowerCase()).reverse().toString());

如果需要,使用下面的正则表达式在回文中保留偶数
数字
字符。否则,您只需从正则表达式中删除
0-9

String palindrome = "..." // from elsewhere
String regex = "[^A-Za-z0-9]";
boolean isPalindrome = palindrome.equals(new StringBuilder(palindrome.replaceAll(regex, "").toLowerCase()).reverse().toString());

下面是一个非
regex
解决方案

public class so4
{
public static void main(String args[])
{
    String str = "Doc, note, I dissent. A fast never prevents a fatness. I diet on cod";
    char c[] =str.toCharArray();
    String newStr="";
    for(int i=0;i<c.length;i++)
    {
        if( (c[i]>=65 && c[i]<=90) || (c[i]>=97 && c[i]<=122))  //check ASCII values (A-Z 65-90) and (a-z 97-122)
        {
            newStr = newStr + c[i]; 
        }
    }
    boolean isPalindrome = newStr.toLowerCase().equals(new StringBuilder(newStr.toLowerCase()).reverse().toString());
    System.out.println(isPalindrome);
}
}
公共类so4
{
公共静态void main(字符串参数[])
{
String str=“医生,注意,我不同意。禁食不能防止肥胖。我以鳕鱼为主食”;
char c[]=str.toCharArray();
字符串newStr=“”;
对于(int i=0;i=65&&c[i]=97&&c[i]
  • 转换成小写

  • String palindrome = "..." // from elsewhere
    boolean isPalindrome = palindrome.replaceAll("[^A-Za-z]", "").toLowerCase().equals(new StringBuilder(palindrome.replaceAll("[^A-Za-z]", "").toLowerCase()).reverse().toString());
    
  • 使用正则表达式删除除字母以外的所有内容

  • 使用

  • 比较字符串是否相等

  • 代码:

    有关更多信息,请参阅和的文档:


    你也可以通过谷歌搜索“Java7字符串”找到它然后单击第一个结果。

    Soln by Vineet似乎更合适。事实上,到目前为止,这似乎有效,但在决定使用它之前,我会继续检查是否有其他人有不同的想法!感谢您抽出时间感谢您抽出时间回复,但是:输出:赛车false@user2121604-他只是忘了把回文转换成lowercase…你应该试着理解这个答案并从中学习,而不仅仅是复制和粘贴它。我试着先看看它是否有效,然后试着从中学习。但是你能详细说明一下吗?我不知道如何将它全部转换成小写,我是Java新手。很抱歉,谢谢如果你只想匹配空格,你可以使用\s而不是匹配字母范围,但这取决于您希望如何使用匹配的详细信息。