如何删除java中的所有空格

Aim*_* Kh 109 java string whitespace

我有一个编程任务,其中一部分要求我创建从用户读取一行的代码并删除该行中的所有空格.该行可以包含一个或多个单词.

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

我在尝试编译时继续这样做:

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)
Run Code Online (Sandbox Code Playgroud)

这是代码

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 ;
           }
         }
        }
}
Run Code Online (Sandbox Code Playgroud)

更容易做到这一点的方法是值得赞赏的,但我仍然希望这个程序正常运行.

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


谢谢大家的帮助,

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

kay*_*ush 205

java.lang.Stringclass有方法substring不是substr,这就是程序中的错误.

此外,如果您可以使用正则表达式,则可以在一行中执行此操作.

a.replaceAll("\\s+","");
Run Code Online (Sandbox Code Playgroud)

  • 即使没有`+`,多个空格也会被删除,因为它们将全部匹配并逐个删除. (10认同)
  • 不是没有必要,但如果用户输入多个空格,则此片段将处理此类情况. (5认同)
  • 使用replaceAll时,正则表达式中是否需要`+`选择器? (3认同)

Kev*_*sox 63

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

a = a.replaceAll("\\s","");
Run Code Online (Sandbox Code Playgroud)

在正则表达式的上下文中,\s将删除任何空格字符(包括空格,制表符等).你需要逃避Java中的反斜杠,以便正则表达式转变为\\s.此外,由于字符串是不可变的,因此将正则表达式的返回值赋值为非常重要 a.

  • @roottraveller 为什么会更快? (5认同)
  • 我认为 `a.replaceAll("\\s+","")` 会快一点。 (2认同)

Rud*_*koŭ 52

不使用literals或最简单的方法regular expressions:

yourString.replaceAll(" ","");
Run Code Online (Sandbox Code Playgroud)


Ank*_*hag 22

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

String lineWithoutSpaces = line.replaceAll("\\s+","");
Run Code Online (Sandbox Code Playgroud)


Clo*_*ble 13

尝试:

  string output = YourString.replaceAll("\\s","")
Run Code Online (Sandbox Code Playgroud)

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


Ach*_*Jha 12

试试这个:

String str = "Your string with     spaces";
str = str.replace(" " , "");
Run Code Online (Sandbox Code Playgroud)

  • 我猜这不适用于选项卡。 (2认同)

小智 7

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;

}
Run Code Online (Sandbox Code Playgroud)

这是从字符串中删除空格的最简单,最直接的方法。


小智 6

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


    }
}
Run Code Online (Sandbox Code Playgroud)