30

一例があります。

public class Test {
    public static void main(String[] args) {
        String a="VIJAY KAKADE";
        String b="VIJAY    KAKADE";
        if(a.equalsIgnoreCase(b)){
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
    }
}

スペースを考慮せずにこれらの文字列をチェックする必要があります。どうすればこれを達成できますか? 文字列を比較するときに文字列内のスペースを無視するにはどうすればよいですか?

4

9 に答える 9

39

空のスペースをすべて置き換えることで、新しい文字列を作成することができます。

if(a.replaceAll("\\s+","").equalsIgnoreCase(b.replaceAll("\\s+",""))) {
   // this will also take care of spaces like tabs etc.
}

次に比較します。

于 2013-07-31T15:02:44.757 に答える
22

すべてのスペースを空の文字列に置き換えると、次の状況を検証する危険性が生じると思います (2 つの名前が等しいことがわかります)。

String a = "ANN MARIE O'RIORDAN"
String b = "ANNMARIE O'RIORDAN"

ここで髪を分割している可能性があることはわかっていますが、単体テストで SQL クエリを検証するための同様のソリューションを探しているときに、この質問を見つけました。私のクエリは複数行static final Stringsであるため、どこにもスペースを見逃さないようにしたかったのです。

そのために、すべての空白を単一のスペースまたはおそらく特殊文字に置き換えることが最も安全な解決策だと思います-それには正規表現が必要です:

if (a.trim().replaceAll("\\s+", " ").equalsIgnoreCase(b.trim().replaceAll("\\s+", " "))) {
    // Strings equivalent
}

考え?

于 2013-12-04T10:11:14.580 に答える
14

Zoltan が正しく指摘しているように、彼以外のすべての答えは実際には間違っています。

サードパーティのライブラリの機能を使用するには、次のことをお勧めしhamcrestます。

import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace;

public class Main {
    public static void main(String[] args) {
        String a = "VIJAY KAKADE";
        String b = "VIJAY    KAKADE";
        System.out.print(String.format("'%s' and '%s' matching: ", a, b));
        if (equalToIgnoringWhiteSpace(a).matches(b)) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }

        String c = "VIJAYKAKADE";
        System.out.print(String.format("'%s' and '%s' matching: ", a, c));
        if (equalToIgnoringWhiteSpace(a).matches(c)) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
    }
}

戻り値:

'VIJAY KAKADE' and 'VIJAY    KAKADE' matching: yes
'VIJAY KAKADE' and 'VIJAYKAKADE' matching: no
于 2015-09-13T13:05:45.180 に答える
12

スペースを空の文字列に置き換えます。

if (a.replace(" ", "").equalsIgnoreCase(b.replace(" ", "")))
于 2013-07-31T15:02:02.180 に答える
2

タブなどを含むすべての空白を置き換えたい場合は、使用できます

a = yourOriginalString.replaceAll("\\s", "");
b = yourOriginalString.replaceAll("\\s", "");
return a.equalsIgnoreCase(b);

編集:すごい忍者は一体欲しい

于 2013-07-31T15:07:56.340 に答える
1

String.replace()を使用して、両方の文字列のスペースを削除できます。

  String aMod = a.replace(" ","");
  String bMod = b.replace(" ","");
  if( aMod.equalsIgnoreCase(bMod) ){
     ... 
于 2013-07-31T15:03:39.833 に答える
1

String#replace()メソッドが役に立ちます。

public static void main(String[] args) {
    String a="VIJAY KAKADE";
    String b="VIJAY    KAKADE";
    a = a.replace(" ", "");
    b = b.replace(" ", "");
    if(a.equalsIgnoreCase(b)){
        System.out.println("yes");
    }else{
        System.out.println("no");
    }
}
于 2013-07-31T15:04:40.517 に答える