简体   繁体   中英

How to get rid of white space in palindrome (Java)

public class reverserapp {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      System.out.println("Please Enter a word");
      String str = scan.nextLine();

      String reverse = "";
      for( int i = str.length() - 1; i >= 0; i--)
          reverse += str.charAt(i);

      if(reverse.equalsIgnoreCase(str))
          System.out.println("Palindrome");
      else System.out.println("Not Palindrome");

    }

}

This is my palindrome code. I'm doing this for a small assignment. I can get single words to work but if I write a something like "Don't nod" it shows up as not palindrome. How can I achieve this? I'd like for my code to ignore punctuation's and white space.

So in the end result should be like "dontnod"

Thanks in advance for any help, complete noob at this.

Remove all non-letter characters, then put the resulting String to lower case .

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

You can use the replace function from StringUtils .

Example:

StringUtils.replace("asdasd aaaa", " ", ""); //-> output: asdasdaaaa

You can define a regex to remove punctuation and space, and perform a String replace on input, eg:

String regex = "[\\p{Punct}\\s]";
String input = "don't nod";
System.out.println(input.replaceAll(regex, ""));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM