Javaの便利なライブラリ、Commonsを紹介します。
Commonsはちょっとした、標準ライブラリをちょっと拡張して
便利にしたようなライブラリです。
わずかな拡張ではありますが、その分使える場面は多いです。
知っておくと生産性の向上に役立ちますし、無駄なミスも減ります。
今回はその中でも文字列の処理に重点を置いたLangパッケージです。
ダウンロードは以下のApacheのサイトから。
http://commons.apache.org/proper/commons-lang/download_lang.cgi
ダウンロードしたら解凍してビルドパスに追加して下さい。
Langパッケージの中でも一番使われるんじゃないかというのがStringUtilsクラス。
Stringクラスを拡張したものです。
同じかどうか比較するequals(通常のものと違いnullでもエラーにならない)
空かどうか判別するisEmpty
文字を左から抽出するleft
など、多くの便利なメソッドがあります。
使い方はこんな感じです。
[ソース]
String str = null;
if(StringUtils.equals(str, "abc")){
System.out.println("True");
}else{
System.out.println("False");
}
[解説]
元の変数がnullですが、StringUtilsを使っているのでNullPointerException
通称ぬるぽは発生しません。
よくJavaで比較する時にif(str == null || str.equals(~))みたいに
書きますがStringUtils.equalsを使えば短く書け、間違えてstr = nullにして
しまうような事もありません。
ライブラリの中も見てみましょう。
public static boolean equals(CharSequence cs1, CharSequence cs2)
{
return cs1 != null ? cs1.equals(cs2) : cs2 == null;
}
コメントは見やすくする為、削除しています。
特に難しい事は無いですね。単純にnullと比較した後にequalsで比較してます。
ライブラリは使うだけでなく、中身も見る習慣をつけるとプログラミング力が
上がるのでお勧めです。
ちなみに引数の型がCharSequenceとなってますが、これはStringも実装している
文字で使うインタフェースです。
同様に
public static boolean isEmpty(CharSequence cs)
{
return cs == null || cs.length() == 0;
}
isEmptyはこんな感じ。
public static String left(String str, int len)
{
if(str == null)
return null;
if(len < 0)
return "";
if(str.length() <= len)
return str;
else
return str.substring(0, len);
}
leftはこんな感じです。
null比較した後にsubstringで先頭から指定文字分を取得してます。
いずれもStringUtilsのメソッドはnullを最初に比較してnullの場合は処理を
行わないことでぬるぽを避けています。
他にも便利なメソッドが多くあるのでAPIドキュメント見て是非使ってみて下さい。
http://www.jajakarta.org/commons/lang-1.0.1/ja/withoutPrimary/org/apache/commons/lang/StringUtils.html
この中のメソッドを全部覚えるのは大変でしょうけど、文字列関係の処理書くときに
目をざっと通すだけで生産性向上すると思います。
LangパッケージというよりStringUtilsだけになってしまいましたが
便利さは伝わったのではないでしょうか。