如何删除java中的所有空格

我有一个编程任务,它的一部分需要我做的代码,从用户读取一行,并删除该行内的所有空白。 该行可以由一个或多个字组成。

我试图用这个程序做的是让它分析每个字符,直到find一个空格,然后将该子string保存为第一个标记。 然后再次循环,直到它没有更多的标记或行结束。

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

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

更容易的方法是赞赏,但我仍然希望得到这个程序的工作。

而且我不能在input中使用哨兵。


谢谢大家的帮助,

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

java.lang.String类的方法substring不是substr ,那就是程序中的错误。

此外,如果你使用正则expression式,你可以在一行中做到这一点。

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

为什么不使用正则expression式呢?

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

在正则expression式的上下文中, \s将删除任何空格字符(包括空格,制表符等)。 你需要在Java中使用反斜杠,这样正则expression式才会变成\\s 。 而且, 由于string是不可变的,因此将正则expression式的返回值赋给a是很重要 a

将string中的所有空格replace为空字符。

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

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

 yourString.replaceAll(" ",""); 

尝试这个:

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

尝试:

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

s – 表示空格字符(制表符等)

 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中删除空格的最简单和最直接的方法。

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

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

不能你只使用String.replace(“”,“”);

 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()方法。

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

//它可以很好地处理任何空格

*不要忘记刺痛的空间b

 boolean flag = true; while(flag) { s = s.replaceAll(" ", ""); if (!s.contains(" ")) flag = false; } return s; 
 String a="string with multi spaces "; String b= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," "); 

//它可以很好地处理任何空格