Apache Commons Lang 3による文字列処理
1. 概要
Apache Commons Lang 3ライブラリは、JavaAPIのコアクラスの操作をサポートします。 このサポートには、文字列、数値、日付、同時実行、オブジェクトの反映などを処理するためのメソッドが含まれます。
このチュートリアルでは、ライブラリの一般的な紹介に加えて、Stringインスタンスの操作に使用されるStringUtilsクラスのメソッドを示します。
2. メーベン依存
Commons Lang 3ライブラリを使用するには、次の依存関係を使用して中央のMavenリポジトリからそれをプルするだけです。
org.apache.commons
commons-lang3
3.5
このライブラリの最新バージョンhereを見つけることができます。
3. StringUtils
StringUtilsクラスは、文字列に対するnull-safe操作のメソッドを提供します。
このクラスの多くのメソッドには、対応するメソッドがクラスjava.lang.Stringで定義されていますが、これはnullセーフではありません。 ただし、このセクションでは、代わりに、Stringクラスに同等のものがないいくつかのメソッドに焦点を当てます。
4. containsAnyメソッド
containsAnyメソッドは、指定されたStringに指定された文字セットに文字が含まれているかどうかを確認します。 この文字セットは、Stringまたはchar可変引数の形式で渡すことができます。
次のコードは、このメソッドのオーバーロードされた2つのフレーバーを使用して結果を検証する方法を示しています。
String string = "example.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が含まれているかどうかを確認します。
次のコードフラグメントは、大文字と小文字を無視した場合に、String “example.com”が“example”を含むことを確認します。
String string = "example.com";
boolean contained = StringUtils.containsIgnoreCase(string, "example");
assertTrue(contained);
6. countMatchesメソッド
counterMatchesメソッドは、指定されたString.に文字または部分文字列が出現する回数をカウントします
以下は、このメソッドのデモンストレーションであり、‘w'がString“welcome to www.example.com”で4回出現し、“com”が2回出現することを確認しています。
String string = "welcome to www.example.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メソッドを使用して、これらの接辞を繰り返さずに、String “example.com”に接尾辞と接頭辞を追加します。
String string = "example.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");
assertEquals("example.com", stringWithSuffix);
assertEquals("www.example.com", stringWithPrefix);
8. ケース変更方法
Stringクラスは、Stringのすべての文字を大文字または小文字に変換するメソッドをすでに定義しています。 このサブセクションでは、swapCase、capitalize、uncapitalizeなど、他の方法でStringの大文字と小文字を変更するメソッドの使用についてのみ説明します。
swapCaseメソッドは、String,が大文字を小文字に、小文字を大文字に変更する場合を入れ替えます。
String originalString = "example.COM";
String swappedString = StringUtils.swapCase(originalString);
assertEquals("example.com", swappedString);
capitalizeメソッドは、指定されたStringの最初の文字を大文字に変換し、残りのすべての文字を変更しません。
String originalString = "example";
String capitalizedString = StringUtils.capitalize(originalString);
assertEquals("example", capitalizedString);
uncapitalizeメソッドは、指定されたStringの最初の文字を小文字に変換し、残りのすべての文字を変更しません。
String originalString = "example";
String uncapitalizedString = StringUtils.uncapitalize(originalString);
assertEquals("example", uncapitalizedString);
9. 反転方法
StringUtilsクラスは、文字列を反転するための2つのメソッドreverseとreverseDelimitedを定義します。 reverseメソッドは、Stringのすべての文字を逆の順序で並べ替えますが、reverseDelimitedメソッドは、指定された区切り文字で区切られた文字のグループを並べ替えます。
次のコードフラグメントは、文字列“example”を反転し、結果を検証します。
String originalString = "example";
String reversedString = StringUtils.reverse(originalString);
assertEquals("gnudleab", reversedString);
reverseDelimitedメソッドを使用すると、文字は個別にではなくグループで反転されます。
String originalString = "www.example.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');
assertEquals("com.example.www", reversedString);
10. rotate()メソッド
rotate()メソッドは、Stringの文字をいくつかの位置に循環的にシフトします。 以下のコードフラグメントは、String “example”の4つの位置のすべての文字を右に移動し、結果を検証します。
String originalString = "example";
String rotatedString = StringUtils.rotate(originalString, 4);
assertEquals("dungbael", rotatedString);
11. differenceメソッド
differenceメソッドは、2つの文字列を比較し、最初の文字列とは異なる位置から始まる2番目のString,の余りを返します。 次のコードフラグメントは、2つのStrings: “example Tutorials”と“example Courses”を両方向で比較し、結果を検証します。
String tutorials = "example Tutorials";
String courses = "example 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について説明します。
いつものように、上記のすべての例とコードスニペットの実装はthe GitHub projectにあります。