この記事ではJava11のStringクラスのメソッドで便利だけど意外と知られていないものを独断と偏見でまとめてみます。より短く、良いコードを目指して、我々にとって馴染みの深いクラスを一度立ち止まって復習していきましょう。
空白削除
業務系のコードを書くときに文字列の前後の空白を削除したいという場面は、何百回と遭遇します。
そのときに、よく使うメソッドはtrimメソッドですよね。
" aaa ".trim(); // aaa
しかし、trimメソッドの場合、全角スペースは削除対象外です。
全角スペースを含めて削除したいときに役に立つのが、stripメソッドです。
stripメソッドは前後の全角スペースを含む空白文字を削除してくれます。
" aaa ".strip(); // aaa
" aaa ".strip(); // aaa
さらに、先頭だけの文字列を削除したい場合には「stripLeading」を。後続だけを削除したい場合には「stripTrailing」を使用することができます。
文字繰り返し
文字列の桁数チェックのテストコードを書くときによく以下のような感じソースコードを書いていませんか?
lengthCheck("aaaaa");
5桁ぐらいのチェックでしたら、問題ありませんが120桁とか長くなると面倒だし何よりも汚いですよね。
そんなときに、役に立つのが「repeat」メソッドです。
"a".repeat(5); // aaaaa
指定の文字列を繰り返すことができる便利なメソッドです。文字列の長さをrepeatの引数で管理できるため、
桁数チェック系のテストコードで積極的に使用して明確にわかりやすくしていきましょう。
CSV作成のときに便利
業務アプリを作成しているとCSVファイルを作成して他のシステムに連携などは、よくあるかと思います。
そんなときに知りたいメソッドが「join」メソッドです。このメソッドを使用することでカンマ区切りの文字列が
簡単に作れるようになります。
String.join(",", "a","b","c"); // a,b,c
もちろん配列に格納された文字も区切り文字を含めた文字列にすることができます。
String[] a = {"a","b","c"};
String.join(",", a); // a,b,c
equalsで文字列比較をしたくない人達に
文字列の比較をするときにJavaでは当たり前に使われているequalsメソッドです。
しかし、これ以外にもStringの標準メソッドを使って文字列比較をすることができます。
String t = new String("a");
String s = new String("a");
t == s // false
t.intern() == s.intern() // true
JavaDocを見ると、internでtrueになるケースは、t.equals(s)と同じとわかります。
他の言語を学んでいて、equalsに慣れない人は使うといいかもしれません。
(仕事で使う人はあまり見かけませんが)
ApacheのStringUtilsが使えない時の空文字判定
厳しい現場になるとOSSが使えず、StringUtilsが使えないケースがあります。
そんなときに知っておきたいのがisBlankメソッドです。
String標準メソッドで空文字の判定ができます。
String s = ""; // 空文字
String t = " "; // 半角スペース
String r = " "; // 全角スペース
String i = null; // null
s.isBlank(); // true
t.isBlank(); // true
r.isBlank(); // ture
i.isBlank(); // true
注意が必要なんですが、nullの時はnullpointerexceptionになります。(当たり前ですが)
ちなみに、isEmptyはlengthが0の時のみtrueとなりますので用途が違います。
まとめ
意外と便利だし小回りがきくメソッドが多いですよね。一度、JavaDocを見直しておくと、あなたの悩みが解決することがあるかも。
(今後も、便利な使い方を見つけたら徐々にこの記事に掲載していく予定です。)