web-dev-qa-db-ja.com

javaではすべての空白を削除する方法

私はプログラミング割り当てを持っています、そしてそれの一部は私がユーザーから行を読み、その行内のすべての空白を取り除くコードを作ることを要求します。行は1つ以上のWordで構成できます。

私がこのプログラムでやろうとしていたのは、スペースを見つけるまで各文字を分析してから、そのサブストリングを最初のトークンとして保存することです。その後、トークンがなくなるまで、または行末に達するまで再度ループします。

私はそれをコンパイルしようとするとき私はこれを得続けます:

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を読みます。

93
Aiman Kh

Java.lang.Stringクラスはsubstringではなくメソッドsubstrを持っています、それはあなたのプログラムのエラーです。

さらに、正規表現の使用に問題がなければ、これを1行で実行できます。

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

これに正規表現を使用しないのはなぜですか。

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

正規表現のコンテキストでは、\sはスペース文字(スペース、タブ文字などを含む)をすべて削除します。正規表現が\\sに変わるように、Javaでバックスラッシュをエスケープする必要があります。また、は文字列が不変であるため、正規表現の戻り値をaに代入することが重要です。

54
Kevin Bowersox

literalsまたはregular expressionsを使用せずにこれを行う最も直感的な方法:

yourString.replaceAll(" ","");
43
Rudziankoŭ

String内のすべてのスペースを空の文字に置き換えます。

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

これを試して:

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

試してください:

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

s - 空白文字(タブ文字など)を示します

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


    }
}
6
Shivansh Rajan
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;

}

これは、文字列からスペースを削除するための最も簡単で直接的な方法です。

4

あなたは単にString.replace( ""、 "")を使用することができます。

3
Isaac

空白を削除するために正規表現を使うことができます。そのスニペットを試してください:

Scanner scan = new Scanner(System.in);
    System.out.println(scan.nextLine().replaceAll(" ", ""));
2
javadev
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()メソッドを使用してください。

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

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

//どんなスペースでもうまくいく

*文字列bのスペースを忘れないでください

0
fatsoft