1. 概要

Apache Commons Lang 3 ライブラリは、JavaAPIのコアクラスの操作をサポートします。 このサポートには、文字列、数値、日付、同時実行性、オブジェクトリフレクションなどを処理するためのメソッドが含まれます。

このチュートリアルでは、ライブラリの概要を説明するだけでなく、Stringインスタンスの操作に使用されるStringUtilsクラスのメソッドについても説明します。

2. Mavenの依存関係

Commons Lang 3ライブラリを使用するには、次の依存関係を使用して中央のMavenリポジトリからライブラリをプルします。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

このライブラリの最新バージョンはここにあります。

3. StringUtils

StringUtils クラスは、文字列に対するnull-safe操作のメソッドを提供します。

このクラスの多くのメソッドには、クラス java.lang.String で定義された対応するメソッドがあり、nullセーフではありません。 ただし、このセクションでは、代わりにStringクラスに相当するものがないいくつかのメソッドに焦点を当てます。

4. containsAnyメソッド

containsAny メソッドは、指定されたStringに指定された文字セットに文字が含まれているかどうかを確認します。 この文字セットは、Stringまたはcharvarargsの形式で渡すことができます。

次のコードフラグメントは、結果の検証でこのメソッドの2つのオーバーロードされたフレーバーの使用を示しています。

String string = "baeldung.com";
boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c');
boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z');
boolean contained3 = StringUtils.containsAny(string, "abc");
boolean contained4 = StringUtils.containsAny(string, "xyz");
 
assertTrue(contained1);
assertFalse(contained2);
assertTrue(contained3);
assertFalse(contained4);

5. containsIgnoreCaseメソッド

containsIgnoreCase メソッドは、指定されたStringに大文字と小文字を区別しない方法で別のStringが含まれているかどうかを確認します。

次のコードフラグメントは、大文字と小文字を無視した場合に、文字列「baeldung.com」「BAELDUNG」を構成することを確認します。

String string = "baeldung.com";
boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG");
 
assertTrue(contained);

6. countMatchesメソッド

counterMatches メソッドは、特定のStringに文字またはサブストリングが出現する回数をカウントします。

以下は、このメソッドのデモンストレーションであり、‘w’ が4回表示され、「com」 String「welcometo www.baeldung.com”

String string = "welcome to www.baeldung.com";
int charNum = StringUtils.countMatches(string, 'w');
int stringNum = StringUtils.countMatches(string, "com");
 
assertEquals(4, charNum);
assertEquals(2, stringNum);

7. 付加および付加方法

appendIfMissingおよびappendIfMissingIgnoreCaseメソッドは、ケース内で渡された接尾辞のいずれかでまだ終了していない場合、指定されたStringの末尾に接尾辞を追加しますそれぞれ敏感な方法と鈍感な方法。

同様に、prependIfMissingおよびprependIfMissingIgnoreCaseメソッドは、渡されたプレフィックスのいずれでも始まらない場合、指定されたStringの先頭にプレフィックスを付加します。

次の例では、appendIfMissingメソッドとprependIfMissingメソッドを使用して、これらの接辞を繰り返さずに文字列「baeldung.com」に接尾辞と接頭辞を追加します。

String string = "baeldung.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");
 
assertEquals("baeldung.com", stringWithSuffix);
assertEquals("www.baeldung.com", stringWithPrefix);

8. ケース変更方法

String クラスは、Stringのすべての文字を大文字または小文字に変換するメソッドをすでに定義しています。 このサブセクションでは、 swapCase Capitalize uncapitalize など、他の方法でStringの大文字と小文字を変更するメソッドの使用についてのみ説明します。

swapCase メソッドは、 String、の大文字と小文字を入れ替え、大文字を小文字に、小文字を大文字に変更します。

String originalString = "baeldung.COM";
String swappedString = StringUtils.swapCase(originalString);
 
assertEquals("BAELDUNG.com", swappedString);

Capitalize メソッドは、指定された String の最初の文字を大文字に変換し、残りのすべての文字を変更せずに残します。

String originalString = "baeldung";
String capitalizedString = StringUtils.capitalize(originalString);
 
assertEquals("Baeldung", capitalizedString);

uncapitalize メソッドは、指定された String の最初の文字を小文字に変換し、残りのすべての文字を変更せずに残します。

String originalString = "Baeldung";
String uncapitalizedString = StringUtils.uncapitalize(originalString);
 
assertEquals("baeldung", uncapitalizedString);

9. 反転方法

StringUtils クラスは、文字列を反転するための2つのメソッドreversereverseDelimitedを定義します。 reverse メソッドは、 String のすべての文字を逆の順序で並べ替えますが、 reverseDelimited メソッドは、指定された区切り文字で区切られた文字のグループを並べ替えます。

次のコードフラグメントは、文字列“ baeldung” を反転し、結果を検証します。

String originalString = "baeldung";
String reversedString = StringUtils.reverse(originalString);
 
assertEquals("gnudleab", reversedString);

reverseDelimited メソッドを使用すると、文字は個別にではなくグループで反転されます。

String originalString = "www.baeldung.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');
 
assertEquals("com.baeldung.www", reversedString);

10. rotate()メソッド

rotate()メソッドは、Stringの文字をいくつかの位置に循環的にシフトします。 以下のコードフラグメントは、文字列「baeldung」のすべての文字を右に4桁移動し、結果を確認します。

String originalString = "baeldung";
String rotatedString = StringUtils.rotate(originalString, 4);
 
assertEquals("dungbael", rotatedString);

11. 差分メソッド

Difference メソッドは、2つの文字列を比較し、最初の文字列とは異なる位置から開始して、2番目の文字列の残りを返します。 次のコードフラグメントは、2つの文字列を比較します。「BaeldungTutorials」「BaeldungCourses」の両方向で、結果を検証します。

String tutorials = "Baeldung Tutorials";
String courses = "Baeldung Courses";
String diff1 = StringUtils.difference(tutorials, courses);
String diff2 = StringUtils.difference(courses, tutorials);
 
assertEquals("Courses", diff1);
assertEquals("Tutorials", diff2);

12. 結論

このチュートリアルでは、Apache Commons Lang 3での文字列処理を紹介し、StringUtilsライブラリクラスから使用できるメインAPIについて説明します。

いつものように、上記のすべての例とコードスニペットの実装は、GitHubプロジェクトにあります。