Java 回文测试器差
我正在做回文测试,但我不知道如何去掉标点符号。程序运行的目的是显示像bob和Yeettey这样的单词是回文,但不承认m-a-m是回文。我如何让它工作Java 回文测试器差,java,Java,我正在做回文测试,但我不知道如何去掉标点符号。程序运行的目的是显示像bob和Yeettey这样的单词是回文,但不承认m-a-m是回文。我如何让它工作 import java.util.Scanner; //this is a palindrome tester /** * YUHHHHHHHH YUHHHHHHH * @author its your boi, J. BACK at it again with another programming project * */ publ
import java.util.Scanner;
//this is a palindrome tester
/**
* YUHHHHHHHH YUHHHHHHH
* @author its your boi, J. BACK at it again with another programming project
*
*/
public class PalindromeTester {
public static void main(String[] args) {
//YOUR CODE HERE
String word;
int z;
int y = 0;
int i = 0;
char letter;
Scanner sc = new Scanner(System.in);
System.out.print("Enter a word: ");
word = sc.nextLine();
word = word.replaceAll("\\s+", "");
word = word.toLowerCase();
z = word.length()-1;
while (i <= z){
if ((letter = word.charAt(i)) == (letter = word.charAt(z-i))){
y += 1;
}
i += 1;
}
if (y == (z+1)){
System.out.println("The word IS a palindrome");
}
else{
System.out.println("The word is NOT a palindrome");
}
}
}
您已经尝试忽略此行中的标点符号
word = word.replaceAll("\\s+", "");
其中\s+匹配任何空格。相反,您可能希望匹配任何非字母的字符
幸运的是,这只是一个快速的正则表达式更改:
word = word.replaceAll("[^A-Za-z]+", "")
替换所有小写和大写字母的否定集合中的任何内容;e、 不是字母的一切
如果您想要不同的行为,例如,希望其他一些字符作为回文中的字符计数,您可以将它们添加到集合中,例如,[^a-Za-z0-9]允许数字通过,如果您想要,[^a-Za-z\\-]将允许破折号通过。适用于我输入一个单词:m-a-m该单词是回文您已经在使用word.replaceAll\\s+,以清除空白输入;如果你想忽略所有的标点符号,你只需要再用力一点。。。。请尝试word.replaceAll\\W*;这将删除所有非单词字符—单词字符是字母a-Z或a-Z、数字0-9或下划线33;。