Java 如何删除空白?
我正试图为我的AP 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
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+,”)
Importjava.util.StringTokenizer
。您使用哪个java版本?啊,没关系-刚才注意到您将reversedCopy
与workingCopy
进行比较,而不是stringToTest
。
String string = sc.next();
String string = sc.nextLine();