如何在Java中删除所有空格

134

我有一个编程任务,其中一部分要求我编写代码以从用户读取一行并删除该行中的所有空格。

这一行可以由一个或多个单词组成。

我尝试使用这个程序分析每个字符,直到找到一个空格,并将该子字符串保存为第一个标记。然后再循环,直到达到没有更多的标记或行末。

当我尝试编译它时,我一直得到这个错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index   out of range: 1
    at java.lang.String.charAt(String.java:694)
    at trim.main(trim.java:23)

这里是代码

import java.util.Scanner ;
import java.lang.Character;
import java.lang.String ;
public class trim
{
        public static void main (String[]args)
        {

        String a  ;
        String b  ;
        String c ;
        char aChar ;
        int i = 0 ;

        Scanner scan = new Scanner(System.in);

        a = scan.nextLine();
        a =a.trim() ;


         for ( ; i >= 0 ; i++ )
         {
           aChar = a.charAt(i) ;
           if (aChar != 32)
           {
            a = a.substring(0,i+1);
           }
           else
           {
            b = a.substring(i,160) ;
            b= b.trim();
            c = c + a ;
            c = c.trim() ;
            a = b ;
            i = 0 ;
           }
           if (b.equals(null))
           {
            i = -1 ;
           }
         }
        }
}

希望有更简单的方法,但我仍想让这个程序正常工作。

输入中不能使用哨兵。


感谢大家所有的帮助,

我将使用更简单的方法,并阅读 Java 文档。


4
在 "substring" 中的功能与 "substr" 不同。 - kaysush
3
你需要从《Head First Java(中文版)》这本书中寻求帮助。尽快阅读它。 - AmitG
谢谢,我猜告诉我使用substr的网站是错的。 - Aiman Kh
2
你考虑过阅读Javadoc吗? - user207421
请考虑阅读Java命名规范 - http://java.about.com/od/javasyntax/a/nameconventions.htm - R9J
使用 a.replaceAll("\\p{Blank}",""),它将从字符串中删除所有空格和制表符。 - CoderSam
14个回答

3

您可以使用正则表达式删除空格,尝试这个片段:

Scanner scan = new Scanner(System.in);
    System.out.println(scan.nextLine().replaceAll(" ", ""));

2
trim.java:30: cannot find symbol
symbol  : method substr(int,int)
location: class java.lang.String
b = a.substr(i,160) ;

String类中没有像substr这样的方法。

使用String.substring()方法。


0
boolean flag = true;
while(flag) {
    s = s.replaceAll(" ", "");
    if (!s.contains(" "))
        flag = false;
}
return s;

-10
String a="string with                multi spaces ";

String b= a.replace("    "," ").replace("   "," ").replace("  "," ").replace("   "," ").replace("  "," ");

//无论有多少空格,它都能正常工作


这并不会移除所有的空格。它无法处理大量的空格字符串。它也没有利用内置的处理空格的方法。最重要的是,它不能解决用户代码的问题。这是一份作业:除非学生的原始解决方案存在致命缺陷,否则删除学生的原始解决方案并不符合正确的教学目的。 - Prune

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接