web-dev-qa-db-ja.com

Javaで文字列から空白を削除する

私はこのような文字列を持っています: 

mysz = "name=john age=13 year=2001";

文字列の空白を削除したいです。 trim()を試しましたが、これは文字列全体の前後の空白だけを削除します。私はreplaceAll("\\W", "")も試しましたが、それから=も削除されます。

どのように私はと文字列を達成することができます:

mysz2 = "name=johnage=13year=2001"
612
zyamat

st.replaceAll("\\s+","")はすべての空白と見えない文字(例えばtab、\n)を削除します。


st.replaceAll("\\s+","")st.replaceAll("\\s","")は同じ結果になります。

2番目の正規表現は最初の正規表現より20%高速ですが、連続するスペースの数が増えるにつれて、最初の正規表現は2番目の正規表現よりもパフォーマンスが良くなります。


直接使用しない場合は、値を変数に割り当てます。

st = st.replaceAll("\\s+","")
1194
Gursel Koca
replaceAll("\\s","")

\w = Wordの文字ならなんでも

\W = Wordの文字ではないもの(句読点などを含む)

\s =スペース文字(スペース、タブ文字などを含む)

\S =スペース以外の文字(文字と数字の両方、句読点など)

(編集:指摘したように、\sを正規表現エンジンに到達させたい場合はバックスラッシュをエスケープする必要があり、その結果\\sとなります。)

228
nitro2k01

質問に対する最も正しい答えは、次のとおりです。

String mysz2 = mysz.replaceAll("\\s","");

私はちょうど他の答えからこのコードを修正しました。私が投稿したのは、質問が要求したとおりのものであることに加え、結果は新しい文字列として返され、元の文字列は変更されないを暗示するようなものです。

(経験豊富なJava開発者は「もちろん、実際にはStringを変更することはできません」と言うかもしれませんが、この質問の対象読者はこれを知らないかもしれません。)

96
Fletch

replaceAll("\\s", "")はどうですか。 こちら を参照。

55
Erkan Haspulat

壊れないスペースも削除する必要がある場合は、次のようにコードをアップグレードできます。

st.replaceAll("[\\s|\\u00A0]+", "");
30
v.nivuahc

文字列操作を処理する1つの方法は、Apache commonsのStringUtilsです。

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

あなたはそれを見つけることができます ここ 。 commons-langはもっとたくさん含まれており、よくサポートされています。

29
jahir

正規表現よりもユーティリティクラスを好む場合は、Spring FrameworkのStringUtilsに trimAllWhitespace(String) というメソッドがあります。

27
kamczak

あなたはすでにGursel Kocaから正しい答えを得ていますが、これがあなたが本当にやりたいことではないという可能性が高いと私は信じます。代わりにKey-Valueを解析してはどうでしょうか。

import Java.util.Enumeration;
import Java.util.Hashtable;

class SplitIt {
  public static void main(String args[])  {

    String person = "name=john age=13 year=2001";

    for (String p : person.split("\\s")) {
      String[] keyValue = p.split("=");
      System.out.println(keyValue[0] + " = " + keyValue[1]);
    }
  }
}

出力:
name =ジョン
年齢= 13歳
年= 2001 

25
Jonas Elfström

あなたが使うべきです

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

の代わりに:

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

このようにして、各文字列の間に複数のスペースがある場合に機能します。 上記の正規表現の+記号は、 "1つ以上の"を意味します

18
Varejones

あなたはそう簡単にそれをすることができます

String newMysz = mysz.replace(" ","");
7
Vinod Ranga

これを行う最も簡単な方法は、たとえば "org.Apache.commons.lang3.StringUtils"のようなcommons-lang3ライブラリのcommons-lang3-3.1.jarクラスを使用することです。

あなたの入力文字列に静的メソッド "StringUtils.deleteWhitespace(String str)"を使用してください。それはすべての空白を取り除いた後あなたに文字列を返します。私はあなたの例の文字列 "name=john age=13 year=2001"を試してみました。それはあなたが望む文字列 - "name=johnage=13year=2001"を正確に返してくれました。お役に立てれば。

6
Ayaskant
public static void main(String[] args) {        
    String s = "name=john age=13 year=2001";
    String t = s.replaceAll(" ", "");
    System.out.println("s: " + s + ", t: " + t);
}

Output:
s: name=john age=13 year=2001, t: name=johnage=13year=2001
6
avngr
String a="string with                multi spaces ";
//or this 
String b= a.replaceAll("\\s+"," ");
String c= a.replace("    "," ").replace("   "," ").replace("  "," ").replace("   "," ").replace("  "," ");

//任意のスペースでうまく動作します *文字列bのスペースを忘れないでください

4
fatsoft

Pattern And Matcherを使うと、より動的になります。

import Java.util.regex.Matcher;
import Java.util.regex.Pattern;

public class RemovingSpace {

    /**
     * @param args
     * Removing Space Using Matcher
     */
    public static void main(String[] args) {
        String str= "jld fdkjg jfdg ";
        String pattern="[\\s]";
        String replace="";

        Pattern p= Pattern.compile(pattern);
        Matcher m=p.matcher(str);

        str=m.replaceAll(replace);
        System.out.println(str);    
    }
}
3
jayesh

Javaでは、以下の操作を実行できます。

String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);

そのためには、以下のパッケージをあなたのプログラムにインポートする必要があります。

import Java.util.regex.Matcher;
import Java.util.regex.Pattern;

お役に立てば幸いです。

3
user27

mysz.replaceAll("\\s+","");を使う

3
Mohammad Raza

\Wは「Word以外の文字」を意味します。空白文字のパターンは\sです。これは パターンjavadoc に詳しく説明されています。

3
JB Nizet
mysz = mysz.replace(" ","");

まずスペースあり、次にスペースなし。 

それが完了しました。 

2
user2357526
import Java.util.*;
public class RemoveSpace {
    public static void main(String[] args) {
        String mysz = "name=john age=13 year=2001";
        Scanner scan = new Scanner(mysz);

        String result = "";
        while(scan.hasNext()) {
            result += scan.next();
        }
        System.out.println(result);
    }
}
2
Tony Nguyen

NullPointerExceptionを避けるには、Apacheの文字列utilクラスを使用することをお勧めします。

org.Apache.commons.lang3.StringUtils.replace("abc def ", " ", "")

出力  

abcdef
2
sendon1982

他にも文字列に存在するspace charがあります。したがって、space charは文字列から置き換える必要があるかもしれません。

例:ノーブレイクスペース、スリーパーエムスペース、句読点スペース

これはspace char /のリストです http://jkorpela.fi/chars/spaces.html

だから私たちは修正する必要があります

THREE-PER-EM SPACEについて

s.replaceAll( "[\ u0020\u2004]"、 "")

1

この問題を解決するには多くの方法があります。あなたは分割関数を使うことも、文字列の置換関数を使うこともできます。

詳細についてはsmilliar問題を参照してください http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html

1
satish

あなたの例でスペースを削除するには、これはそれを行うための別の方法です:

String mysz = "name=john age=13 year=2001";
String[] test = mysz.split(" ");
mysz = String.join("", mysz);

これは、スペースを区切り文字とする配列に変換してから、配列内の項目をスペースなしで結合します。

それはかなりうまくいき、理解しやすいです。 

1
Megawatt

各テキストグループをそれぞれのサブストリングに分けてから、それらのサブストリングを連結します。 例 

public Address(String street, String city, String state, String Zip ) {
               this.street = street;
    this.city = city;
    //Now checking to make sure that state has no spaces...
    int position = state.indexOf(" ");
    if(position >=0) {
        //now putting state back together if it has spaces...
        state = state.substring(0, position) + state.substring(position + 1);  
    } 
0
user9832813

下記のJavaコードも見てください。以下のコードは「組み込み」メソッドを使用しません。

/**
 * Remove all characters from an alphanumeric string.
 */
public class RemoveCharFromAlphanumerics {

    public static void main(String[] args) {

        String inp = "01239Debashish123Pattn456aik";

        char[] out = inp.toCharArray();

        int totint=0;

        for (int i = 0; i < out.length; i++) {
            System.out.println(out[i] + " : " + (int) out[i]);
            if ((int) out[i] >= 65 && (int) out[i] <= 122) {
                out[i] = ' ';
            }
            else {
                totint+=1;
            }

        }

        System.out.println(String.valueOf(out));
        System.out.println(String.valueOf("Length: "+ out.length));

        for (int c=0; c<out.length; c++){

            System.out.println(out[c] + " : " + (int) out[c]);

            if ( (int) out[c] == 32) {
                System.out.println("Its Blank");
                 out[c] = '\'';
            }

        }

        System.out.println(String.valueOf(out));

        System.out.println("**********");
        System.out.println("**********");
        char[] whitespace = new char[totint];
        int t=0;
        for (int d=0; d< out.length; d++) {

            int fst =32;



            if ((int) out[d] >= 48 && (int) out[d] <=57 ) {

                System.out.println(out[d]);
                whitespace[t]= out[d];
                t+=1;

            }

        }

        System.out.println("**********");
        System.out.println("**********");

        System.out.println("The String is: " + String.valueOf(whitespace));

    }
}

入力:

String inp = "01239Debashish123Pattn456aik";

出力:

The String is: 01239123456
0
Deb

Kotlin st.replaceAll("\\s+","")を使用するときは、必ず"\\s+" Regex でラップしてください。

"myString".replace(Regex("\\s+"), "")
0
public static String removeWhiteSpaces(String str){
        String s = "";
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            int temp = arr[i];
            if(temp!=32 && temp!=9){ // 32 ASCII for space and 9 is for Tab
                s+=arr[i];
            }
        }
        return s;
    }

これは役に立つかもしれません。

0
Rajesh Gurbani

空白文字は、Character ClassからisWhitespace関数を使用して削除できます。

public static void main(String[] args) {
    String withSpace = "Remove white space from line";
    StringBuilder removeSpace = new StringBuilder();

    for (int i = 0; i<withSpace.length();i++){
        if(!Character.isWhitespace(withSpace.charAt(i))){
            removeSpace=removeSpace.append(withSpace.charAt(i));
        }
    }
    System.out.println(removeSpace);
}
0
Abdur Rahman