Javaで文字列を扱う際、「null
チェックが面倒」「空文字との判別が煩雑」「フォーマット処理が冗長」など、細かな処理に手間取った経験はありませんか?
こうした煩わしさを解消し、コードをより安全かつ簡潔に書けるようにしてくれるのが、Googleが提供するライブラリGuavaのStrings
クラスです。
この記事では、Strings
クラスが提供する代表的なメソッドの使い方と注意点を、具体例とともにわかりやすく解説します。日々の開発をスムーズにするためのヒントとして、ぜひ参考にしてください。
GuavaのStringsクラスとは?
Guavaのcom.google.common.base.Strings
クラスは、文字列処理用のユーティリティクラスです。
Java標準のString
クラスでは煩雑になりがちな処理、たとえばnull
や空文字の判定、文字列の繰り返しや桁合わせなどを、簡潔で安全に記述できるメソッド群として提供しています。
特にnull
の扱いに強く、例外を避けつつスマートなコードを書きたいときに非常に便利です。日常的な開発の中で頻出する「ちょっとした文字列操作」をシンプルにしてくれるのがStrings
クラスの魅力です。
Stringsのメソッド一覧
ここでは、Strings
クラスで利用できるメソッドとその概要を紹介します。
文字列のnullチェック、整形、繰り返し、共通部分の抽出など、日常的な開発で役立つ機能が揃っています。
メソッド | 説明 |
---|---|
isNullOrEmpty(String) | null または空文字列かどうかを判定 |
nullToEmpty(String) | null を空文字列("" )に変換 |
emptyToNull(String) | 空文字列("" )をnull に変換 |
padStart(String, int, char) | 指定した文字で文字列の前方を埋める |
padEnd(String, int, char) | 指定した文字で文字列の後方を埋める |
repeat(String, int) | 文字列を指定回数繰り返して連結 |
commonPrefix(CharSequence, CharSequence) | 2つの文字列の共通の接頭部分を取得 |
commonSuffix(CharSequence, CharSequence) | 2つの文字列の共通の末尾部分を取得 |
lenientFormat(String, Object...) | 例外を出さずに安全にフォーマットする |
このあと、それぞれのメソッドについて具体的な使用例とともに詳しく解説していきます。
各メソッドの使い方とコード例
ここからは、先ほど紹介したメソッドについて、具体的な使用例とあわせて詳しく解説していきます。用途や注意点も併せて紹介するので、実際のコードに取り入れる際の参考にしてください。
1. isNullOrEmpty
null
または空文字列(""
)であるかを簡潔に判定できます。
Strings.isNullOrEmpty(null); // true
Strings.isNullOrEmpty(""); // true
Strings.isNullOrEmpty("abc"); // false
" "
(半角スペースなど空白文字列)はfalse
となるため、Apache CommonsのStringUtils.isBlank()
とは挙動が異なります。
2. nullToEmpty / emptyToNull
文字列がnull
や空である場合の処理を統一することで、NullPointerException
のリスクを軽減できます。
Strings.nullToEmpty(null); // ""
Strings.nullToEmpty("a"); // "a"
Strings.emptyToNull(""); // null
Strings.emptyToNull("abc"); // "abc"
3. padStart / padEnd
指定した長さになるまで、文字列の前後に任意の文字を埋めて補完します。フォーマット揃えやゼロ埋めに便利です。
Strings.padStart("7", 3, '0'); // "007"
Strings.padEnd("1", 4, '_'); // "1___"
4. repeat
指定した文字列を、任意の回数だけ繰り返して連結します。
Strings.repeat("-", 5); // "-----"
区切り線や疑似データの生成などに便利です。
Java 11 以降ではString.repeat(int)
が標準で利用できます。
5. commonPrefix / commonSuffix
2つの文字列の共通する接頭語・接尾語を取り出すのに使います。
Strings.commonPrefix("intranet", "internet"); // "int"
Strings.commonSuffix("meeting", "testing"); // "ting"
ファイル名やパス、URLの共通部分を抽出する際に便利です。
6. lenientFormat
String.format()
よりも柔軟で、フォーマットミスがあっても例外を投げずに処理を継続できます。
ログ出力やデバッグ用途に最適です。
基本的な使い方
Strings.lenientFormat("Hello %s, you are %s years old", "Alice", 25);
// "Hello Alice, you are 25 years old"
引数が足りない場合
Strings.lenientFormat("Hello %s, you are %s years old", "Alice");
// "Hello Alice, you are %s years old" (残りのプレースホルダーはそのまま)
引数が多すぎる場合
Strings.lenientFormat("Hello %s", "Alice", 25, "extra");
// "Hello Alice [25, extra]" (余分な引数は末尾に追加)
このように、各メソッドは「頻出だけど煩雑」になりがちな処理を、シンプルで読みやすくしてくれます。
実務での活用シーン
GuavaのStrings
クラスは、日々のJava開発におけるちょっとした文字列処理を簡潔にし、コードの可読性と安全性を高めてくれます。以下のような場面で特に役立ちます。
- APIレスポンス整形:nullや空文字が混在するフィールドを
nullToEmpty()
やemptyToNull()
で統一して処理。デシリアライズやUI表示での不具合を防止。 - ログ出力:IDやメッセージの桁を
padStart()
やpadEnd()
で揃えて、ログの見やすさ・解析性を向上。 - CSVや固定長ファイルの出力:繰り返しや桁埋めが必要な文字列を整形する際に
repeat()
やpadEnd()
が有効。 - バッチ処理や前処理:ファイル名やURLなどの共通プレフィックス・サフィックスを
commonPrefix()
/commonSuffix()
で抽出し、分類・グルーピングに活用。 - エラーハンドリングやデバッグ:
lenientFormat()
で例外を出さずにフォーマットし、予期しない引数のミスにも耐える安全なログ生成。
まとめ:Java文字列処理を効率化するGuavaのStringsクラス
GuavaのStrings
クラスは、Java開発における文字列処理をシンプルかつ安全にしてくれる便利なユーティリティです。特に、null
の扱いや文字列の整形・繰り返し・共通部分の抽出といった定番の処理を、明快なAPIで記述できる点が大きな魅力です。
Apache CommonsのStringUtils
と似た機能を持つ部分もありますが、Guavaを採用しているプロジェクトでは、Strings
クラスを活用することで、冗長なコードの削減やバグ防止に繋がり、保守性の高い実装が可能になります。
「ちょっとした文字列処理をもっと簡単に書きたい」「nullまわりのミスを減らしたい」と感じたら、ぜひStrings
クラスの導入を検討してみてください。