String.indent()とtransform()
テキストをインデントし、文字列変換を流れるようにチェーンする。
コード比較
✕ Java 8
String[] lines = text.split("\n");
StringBuilder sb = new StringBuilder();
for (String line : lines) {
sb.append(" ").append(line)
.append("\n");
}
String indented = sb.toString();
✓ Java 12+
String indented = text.indent(4);
String result = text
.transform(String::strip)
.transform(s -> s.replace(" ", "-"));
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
組み込み
インデントは一般的な操作で、1回の呼び出しで完結します。
チェーン可能
transform()で文字列のフルエントなパイプラインが組めます。
クリーンなコード
行の分割やStringBuilderのループが不要になります。
旧来のアプローチ
手動インデント
モダンなアプローチ
indent() / transform()
JDKバージョン
12
難易度
初級
JDKサポート
String.indent()とtransform()
利用可能
JDK 12(2019年3月)以降、広く利用可能
仕組み
indent(n)は各行の先頭にnスペースを追加します。transform(fn)は任意の関数を適用して結果を返し、文字列操作のフルエントなチェーンを可能にします。
関連ドキュメント