【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("samurain");   // “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

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

中沢 丈

中沢 丈

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

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