Java 如何删除空白?

Java 如何删除空白?,java,eclipse,string,Java,Eclipse,String,我正试图为我的AP Java类创建一个回文测试程序,我需要完全删除代码中的空白,但它不允许我这样做 import java.util.Scanner; public class Palin{ public static boolean isPalindrome(String stringToTest) { String workingCopy = removeJunk(stringToTest); String reversedCopy = reverse(working

我正试图为我的AP Java类创建一个回文测试程序,我需要完全删除代码中的空白,但它不允许我这样做

import java.util.Scanner;

public class Palin{

  public static boolean isPalindrome(String stringToTest) {
    String workingCopy = removeJunk(stringToTest);
    String reversedCopy = reverse(workingCopy);

    return reversedCopy.equalsIgnoreCase(workingCopy);
  }

  public static String removeJunk(String string) {
    int i, len = string.length();
    StringBuffer dest = new StringBuffer(len);
    char c;


    for (i = (len - 1); i >= 0; i-=1) {
      c = string.charAt(i);
      if (Character.isLetterOrDigit(c)) 
      {
        dest.append(c);
      }


    }

    return dest.toString();
  }

  public static String reverse(String string) {
    StringBuffer sb = new StringBuffer(string);

    return sb.reverse().toString();
  }

  public static void main(String[] args) {
    System.out.print("Enter Palindrome: ");
    Scanner sc = new Scanner(System.in);
    String string = sc.next();

    String str = string;
    String space = "";
    String result = str.replaceAll("\\W", space);
    System.out.println(result);

    System.out.println();
    System.out.println("Testing palindrome:");
    System.out.println("    " + string);
    System.out.println();

    if (isPalindrome(result)) {
      System.out.println("It's a palindrome!");
    } else {
      System.out.println("Not a palindrome!");
    }
    System.out.println();
  }
}

任何帮助都将不胜感激。

使用StringTokenizer删除


我还没有实际测试过,但是你考虑过这个方法吗


另一件需要注意的事情是,在删除所有非数字/字母字符时,removeJunk也会反转字符串(它从末尾开始,然后一次追加一个字符)


因此,在再次反转后(在
反转中
),您将保留原始字符串,并且它将始终声明给定的字符串是回文。

看起来您的代码很好,除了以下内容。您正在使用

String string = sc.next();
它不会读取整行输入,因此会丢失部分文本。我认为你应该用下面这句话来代替那句话

String string = sc.nextLine();

您应该使用
字符串
替换(char oldChar,char newChar)
方法。 尽管名称表明仅替换第一个引用,但所有引用都将被替换。这种方法的优点是不使用正则表达式,因此效率更高


所以试着
string.replace(“”,”)

如果只想删除开头和结尾的空格,可以使用内置函数trim(),例如“abcd”。trim()是“abcd”
如果要在任何地方删除它,可以使用带有空格类的replaceAll()方法作为参数,例如“abcd”.replaceAll(“\W”,”)。

这应该替换
replaceAll
块,但也应该使用
replaceAll(\\W“,”)
replaceAll(\\s+,”)
Import
java.util.StringTokenizer
。您使用哪个java版本?啊,没关系-刚才注意到您将
reversedCopy
workingCopy
进行比较,而不是
stringToTest
String string = sc.next();
String string = sc.nextLine();