Google 製の Java ライブラリ「Guava」を解説する連載の第二回です。 前回は Google Guava の概要と導入方法について解説しました。 今回からは Google Guava の機能・使い方について解説します。 今回は基本クラスを取り上げます。 基本クラスには主に文字列を操作するためのクラスがあります。 文字列そのものを扱う Strings クラス、文字列の結合を行う Joiner クラス、 文字列の分割を行う Spliter クラスがあります。
Strings クラス
Strings クラスは文字列を操作するためのクラスです。 null と空文字を検証/操作するために isNullOrEmpty(), emptyToNull(), nullToEmpty() メソッドがあります。 それぞれの使い方と実行結果について見ていきます。
isNullOrEmpty()
まずは isNullOrEmpty メソッドのサンプルです。 引数の値が null もしくは空文字の場合に true を返却します。 値が設定されている場合は false を返却します。 半角スペースだけの場合も false です。
Strings.isNullOrEmpty(null); // "true" が返却されます
Strings.isNullOrEmpty(""); // "true" が返却されます
Strings.isNullOrEmpty("a"); // "false" が返却されます
Strings.isNullOrEmpty(" "); // "false" が返却されます
commonPrefix(), commonSuffix()
引数に指定した2つの文字列から、共通している接頭辞/接尾辞の文字列を返却します。
// commonPrefix
Strings.commonPrefix("abc12345", "abcABCDE"); // "abc" を返却します
Strings.commonPrefix("setHoge", "setMoge"); // "set"を返却します
// commonSuffix
Strings.commonSuffix("12345abc", "ABCabc"); // "abc" を返却します
Strings.commonSuffix("removable", "usable"); // "able"を返却します
padStart(), padEnd()
文字列長が指定した長さになるまで指定した文字でパディングを行い、その文字列を返却します。
// padStart
Strings.padStart("123", 5, '0'); // "00123" を返却します
// padEnd
Strings.padEnd("123", 5, '0'); // "12300" を返却します
repeat()
引数で指定した文字列を指定した回数だけ繰り返した文字列を返却します。
Strings.repeat("0", 10); // "0000000000" を返却します
Strings.repeat("hey", 3); // "heyheyhey" を返却します
Joiner クラス
Joiner クラスは文字列の結合を簡単にするクラスです。 様々な結合の方法を提供してくれています。
// 文字列の配列を結合する
// つぎの例は、カンマで結合する例。 "abc,def,ghi" の文字列が返却される。
String[] values = {"abc", "def", "ghi"};
String result = Joiner.on(',').join(values);
// 文字列のリストを結合することもできる
List values = new ArrayList();
values.add("abc");
values.add("def");
values.add("ghi");
String result = Joiner.on(',').join(values);
// skipNulls メソッドで、結合する際に null の値をスキップすることもできる
// つぎの例の場合、"abc,ghi" を返却します
List values = new ArrayList();
values.add("abc");
values.add(null);
values.add("ghi");
String result = Joiner.on(',').skipNulls().join(values);
// Map を引数にして、KeyValue の文字列を作成することもできる
// つぎの例の場合 "name=tom&age=20" という値が返却されます
Map map = new HashMap();
map.put("name", "tom");
map.put("age", "20");
String result = Joiner.on('&').withKeyValueSeparator("=").join(map);
Splitter クラス
Splitter クラスは文字列の分割を助けてくれるクラスです。 文字数、指定した文字、KeyValue など様々な基準で文字列分割をすることができます。
// 指定した文字数で文字列を分割する
// つぎの場合 "abcde", "fghij", "klmn" の文字列のリストを返却します
List list = Splitter.fixedLength(5).splitToList("abcdefghijklmn");
// 指定した文字で文字列を分割する
// つぎの場合はカンマで文字列を分割し、"joe", "tom", "susie" の文字列のリストを返却します
List list = Splitter.on(',').splitToList("joe,tom,susie");
// KeyValue になっている文字列 (クエリ文字列のような文字列) を分解する
// つぎの場合、キー"name"に"tom", キー"age"に"20" が格納された Map を返却します
Splitter.on("&").trimResults().withKeyValueSeparator('=').split("name=tom&age=20");
次回はもっと便利なコレクションクラスを解説
今回は基本クラスである Strings, Splitter クラスについて解説しました。 次稿では Google Guava が誕生したきっかけであり、最も便利だと言われるコレクションクラスについて解説します。 引続きご覧いただければ幸いです。 (近日公開予定)