1. 概要

この短いチュートリアルでは、Javaの空白を無視して文字列を比較する方法を説明します。

2. replaceAll()メソッドを使用します

2つの文字列があるとします。1つはスペースを含み、もう1つはスペース以外の文字のみを含みます。

String normalString = "ABCDEF";
String stringWithSpaces = " AB  CD EF ";

Stringクラスの組み込みのreplaceAll()メソッドを使用して、スペースを無視しながらそれらを簡単に比較できます。

assertEquals(normalString.replaceAll("\\s+",""), stringWithSpaces.replaceAll("\\s+",""));

上記のreplaceAll()メソッドを使用すると、タブや\nなどの非表示文字を含む文字列内のすべてのスペースが削除されます。

\ s +に加えて、\sを使用できます。

3. ApacheCommonsLangを使用する

次に、 Apache CommonsLangライブラリのStringUtilsクラスを使用して、同じ目標を達成できます。

このクラスには、 deleteWhitespace()メソッドがあります。このメソッドは、String内のすべてのスペースを削除するために使用されます。

assertEquals(StringUtils.deleteWhitespace(normalString), StringUtils.deleteWhitespace(stringWithSpaces));

4. SpringフレームワークのStringUtilsクラスを使用します

最後に、プロジェクトですでにSpring Frameworkを使用している場合は、org.springframework.utilパッケージのStringUtilsクラスを使用できます。

今回使用するメソッドはtrimAllWhitespace()です。

assertEquals(StringUtils.trimAllWhitespace(normalString), StringUtils.trimAllWhitespace(stringWithSpaces));

人の名前のようにスペースに意味がある文字列を比較する場合は、この記事のメソッドを使用しないでください。たとえば、次の2つの文字列は等しいと見なされます。 :「JACKIECHAN」と「JACKIE CHAN」、これは私たちが実際に望んでいるものではないかもしれません。

5. 結論

この記事では、Java の空白を無視して、文字列を比較するさまざまな方法を見てきました。

いつものように、この記事のサンプルコードは、GitHubにあります。