【Java入門】StringUtilsの使い方総まとめ(Apache Commons Lang)

こんにちは!エンジニアの中沢です。

Javaには文字列がnullの場合でもNullPointerExceptionの例外が発生しないようにするための、「StringUtilsクラス」があります。

StringUtilsクラスは「Apache Commons Lang」のライブラリを使う必要があるので、上手く活用してください。

この記事では、

  • StringUtilsとは
  • 文字列を調べる方法
  • という基本的な内容から、

  • 空白や特定の文字を削除する方法
  • 文字列を置換や追加する方法
  • 文字列の分割や結合をする
  • などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、「StringUtilsクラス」の使い方をわかりやすく解説します!

    StringUtilsとは

    StringUtilsクラスは、文字列がnullの場合でもNullPointerExceptionの例外が発生しないように作られています。そのため、文字列がnullの場合に例外を回避するコードを書く手間を省くことができます!

    StringUtilsクラスは「Apache Commons Lang」のライブラリに含まれているため、使用するにはライブラリをダウンロードしてプロジェクトに追加する必要があります。

    ライブラリのダウンロードページはこちらです。
    http://commons.apache.org/proper/commons-lang/download_lang.cgi

    また、ライブラリを使うには次のようなimport文が必要です。

    import org.apache.commons.lang3.StringUtils;

    nullの処理以外は標準APIと同じ動作をするため、この記事では文字列がnullの場合の動作を中心に解説します。

    文字列を調べる方法

    文字列がnullか空か空白か調べる(isEmpty/isBlank)

    文字列がnullか空か空白かを調べるにはisEmptyメソッドisBlankメソッドを使います。

    次の例でisEmptyとisBlankの動作を確認してみましょう。

    StringUtils.isEmpty(null);   // true
    StringUtils.isEmpty("");   // true
    StringUtils.isEmpty(" ");   // false
    
    StringUtils.isBlank(null);   // true
    StringUtils.isBlank("");   // true
    StringUtils.isBlank(" ");   // true

    文字列がnullの場合でも、isEmptyとisBlankは例外を発生させずに”true”を返しているのが確認できます!

    文字列を比較する(equals/compare)

    文字列を比較するにはequalsメソッドcompareメソッドを使います。

    StringUtils.equals(null, null);   // true
    StringUtils.equals(null, "a");   // false
    
    StringUtils.compare(null, null);   // 0
    StringUtils.compare(null , "a");   // -1
    StringUtils.compare("a", null);   // 1

    文字列がnullの場合でも比較ができていることが確認できます!

    指定した文字列があるか調べる(indexOf/contains)

    指定した文字列があるか調べるにはindexOfメソッドcontainsメソッドを使います・

    StringUtils.indexOf(null, "a");   // -1
    StringUtils.indexOf("abc", "b");   // 1
    
    StringUtils.contains(null, "a");   // false
    StringUtils.contains("abc", "a");   // true

    indexOfメソッドのように戻り値がint型の場合は、文字列がnullのときに”-1”を返します。

    アルファベットか数字か空白か全角か判定する(isAlpha/isNumeric/isWhitespace/isAsciiPrintable)

    アルファベットや全角、半角などの文字を判定するには、isAlphaメソッドisNumericメソッドisWhitespaceメソッドisAsciiPrintableメソッドを使います。

    StringUtils.isAlpha(null);   // false
    StringUtils.isAlpha("abc");   // true
    
    StringUtils.isNumeric(null);   // false
    StringUtils.isNumeric("123");   // true
    
    StringUtils.isWhitespace(null);   // false
    StringUtils.isWhitespace("");   // true
    StringUtils.isWhitespace("  ");   // true
    
    StringUtils.isAsciiPrintable(null);   // false
    StringUtils.isAsciiPrintable("samurai");   // true
    StringUtils.isAsciiPrintable("さむらい");   // false

    StringUtilsを使うと文字の判定も簡単に行うことができます。

    空白や特定の文字を削除する方法

    空白や制御文字を削除する(trim/strip)

    空白や改行コードなどの制御文字を削除するにはtrimメソッドstripメソッドを使います。

    StringUtils.trim(null);   // null
    StringUtils.trim("samurai\n");   // “samurai”
    
    StringUtils.strip(null);   // null
    StringUtils.strip("  abc  ");   // “abc”

    文字列の先頭と末尾の空白や改行コードが削除できました!

    指定した文字を削除する(remove)

    指定した文字を削除するにはremoveメソッドを使います。

    StringUtils.remove(null, "a");   // null
    StringUtils.remove("samurai", "a");   // “smuri”

    このように文字を指定して削除することができました!

    文字列を置換や追加する方法

    指定した文字を置換する(replace)

    指定した文字を置換するにはreplaceメソッドを使います。

    StringUtils.replace(null, "a", "b");   // null
    StringUtils.replace("samurai", "a", "b");   // “sbmurbi”

    このように文字列の置換ができました!

    文字列がnullのときに空の文字列に変える(defaultString)

    文字列がnullのときに空の文字列を返したい場合にはdefaultStringメソッドを使います。

    StringUtils.defaultString(null);   // “”
    StringUtils.defaultString("");   // “”

    このようにnullを空の文字列に変えることができました!

    文字列を追加する(leftPad/repeat)

    文字列の先頭に指定した桁数になるように文字列を追加するには、leftPadメソッドを使います。

    StringUtils.leftPad(null, 1);   // null
    StringUtils.leftPad("a", 3);   // "  a"
    StringUtils.leftPad("a", 3, "b");   //”bba”

    同じ文字列を繰り返し追加する場合はrepeatメソッドを使います。

    StringUtils.repeat(null, 3);   // null
    StringUtils.repeat("abc", 3);   // “abcabcabc”

    このように文字列の追加ができました!

    文字列の分割や結合をする

    文字列を分割する(split)

    文字列を空白や指定した文字で分割するにはsplitメソッドを使います。

    StringUtils.split(null);   // null
    StringUtils.split("samu rai");   // ["samu", "rai"]
    StringUtils.split("samu,rai", ",");   // ["samu", "rai"]

    このように文字列の分割ができました!

    文字列を結合する(join)

    文字列を空白や指定した文字で結合するにはjoinメソッドを使います。

    StringUtils.join(null);   // null
    StringUtils.join(["a", "b", "c"]);   // "abc"
    StringUtils.join(["a", "b", "c"], ':');   // "a:b:c"

    このように文字列の結合ができました!

    他にはどんなメソッドがあるの?

    ここでは紹介しきれなかったメソッドはこちらの公式ドキュメントで確認できます。
    https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

    String(文字列)クラス総まとめ

    String(文字列)クラスについてさらに詳しく知りたいときはこちらの記事を確認してください!

    まとめ

    いかがでしたか?

    今回はStringUtilsの使い方について解説しました。文字列がnullの場合の例外処理をする必要がなくなり、便利なのでぜひ活用してくださいね。

    もし文字列がnullのときの例外処理が面倒だと思ったらこの記事を確認してください!

    LINEで送る
    Pocket

    SEからWebエンジニアへ転職した理由

    侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

    SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

    弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

    「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
    更新日 : 2019年10月7日

    書いた人

    中沢 丈

    中沢 丈

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説