如何删除 Java 中的所有空格

我有一个编程任务,其中一部分要求我编写代码,从用户那里读取一行内容,并删除该行内的所有空白。 这一行可以由一个或多个单词组成。

我试图用这个程序做的是让它分析每个字符,直到找到一个空格,然后将该子字符串保存为第一个标记。然后再次循环,直到它不再到达任何标记或行的末尾。

当我尝试编译它时,我不断得到这个结果:

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 ;
}
}
}
}

更简单的方法做到这一点是赞赏的,但我仍然希望得到这个程序的工作。

我不能在输入中使用哨兵。


谢谢大家的帮助,

我将使用更简单的方法,并读取 javadoc。

634531 次浏览

试试这个:

String str = "Your string with     spaces";
str = str.replace(" " , "");

试试:

  string output = YourString.replaceAll("\\s","")

S-表示空格字符(制表符等)

java.lang.String类有方法 substring而不是 substr,这是程序中的错误。

此外,如果可以使用正则表达式,那么可以在一行中完成此操作。

a.replaceAll("\\s+","");

用空字符替换 String 中的所有空格。

String lineWithoutSpaces = line.replaceAll("\\s+","");

为什么不使用正则表达式呢?

a = a.replaceAll("\\s","");

在正则表达式的上下文中,\s将删除任何空格字符(包括空格、制表符等)。在 Java 中需要转义反斜杠,这样正则表达式就变成了 \\s。还有 因为字符串是不可变的,所以将正则表达式的返回值赋给 a

您不能只使用 String.place (“”,“”) ;

您可以使用正则表达式来删除空格,请尝试下面的代码片段:

Scanner scan = new Scanner(System.in);
System.out.println(scan.nextLine().replaceAll(" ", ""));
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 ()方法。

package com.infy.test;


import java.util.Scanner ;
import java.lang.String ;


public class Test1 {




public static void main (String[]args)
{


String a  =null;




Scanner scan = new Scanner(System.in);
System.out.println("*********White Space Remover Program************\n");
System.out.println("Enter your string\n");
a = scan.nextLine();
System.out.println("Input String is  :\n"+a);




String b= a.replaceAll("\\s+","");


System.out.println("\nOutput String is  :\n"+b);




}
}
public static String removeSpace(String s) {
String withoutspaces = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != ' ')
withoutspaces += s.charAt(i);


}
return withoutspaces;


}

这是从 String 中删除空格的最简单、最直接的方法。

String a="string with                multi spaces ";


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

//适用于任何空格

String a="string with                multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");


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

//适用于任何空格

别忘了刺中的空间 *

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

不使用 literalsregular expressions的最直观的方法是:

yourString.replaceAll(" ","");