2017년 11월 23일 목요일

StringUtilsの使い方


「文字列がnullのときの例外処理が面倒」
「文字列を調べる方法を知りたい」
「空白や特定の文字を削除したい」
「文字列を置換や追加したい」

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か空か空白か調べる

文字列が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

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メソッドを使います。


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

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メソッドを使います・
StringUtils.indexOf(null, “a”)   // -1
StringUtils.indexOf("abc", "b")   // 1

StringUtils.contains(null, “a”)   // false
StringUtils.contains("abc", “a”)   // true

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メソッドを使います。


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.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メソッドを使います。


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

StringUtils.strip(null)   // null
StringUtils.strip("  abc  ")   // “abc”

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

StringUtils.strip(null)   // null
StringUtils.strip("  abc  ")   // “abc”
文字列の先頭と末尾の空白や改行コードが削除できました!

指定した文字を削除する

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

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

StringUtils.remove(null, "a")   // null
StringUtils.remove("samurai", "a")   // “smuri”
このように文字を指定して削除することができました!

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

指定した文字を置換する

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

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

StringUtils.replace(null, "a", "b")   // null
StringUtils.replace("samurai", "a", "b")   // “sbmurbi”
このように文字列の置換ができました!

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

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


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

StringUtils.defaultString(null)   // “”
StringUtils.defaultString("")   // “”
このようにnullを空の文字列に変えることができました!

文字列を追加する

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


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

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”

StringUtils.repeat(null, 3)   // null
StringUtils.repeat("abc", 3)   // “abcabcabc”
このように文字列の追加ができました!


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

文字列を分割する

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


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

StringUtils.split(null)   // null
StringUtils.split("samu rai")   // ["samu", "rai"]
StringUtils.split("samu,rai", ",")   // ["samu", "rai"]
このように文字列の分割ができました!

文字列を結合する

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


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

StringUtils.join(null)   // null
StringUtils.join(["a", "b", "c"])   // "abc"
StringUtils.join(["a", "b", "c"], ':')   // "a:b:c"
このように文字列の結合ができました!

댓글 없음:

댓글 쓰기