複数行の文字列をシステム コンソールに書き込み、そのテキスト ブロックをインデントする方法を提案できる人はいますか? コマンド ライン プログラムのヘルプを表示するためだけに使用されているため、比較的軽量なものを探しています。
27791 次
2 に答える
44
注:以下で説明するアプローチは、質問のコメントで@BillManによって説明されている更新された要件を満たしていません。これは、コンソール行の長さよりも長い行を自動的に折り返すことはありません。折り返しが問題にならない場合にのみ、このアプローチを使用してください。
String.replaceAll()
簡単なオプションとして、次のように
使用できます。
String output = <your string here>
String indented = output.replaceAll("(?m)^", "\t");
Java の正規表現に慣れていない場合は、次のように機能します。
(?m)
複数行モードを有効にします。これは、単一の行 (デフォルト) としてoutput
扱うのではなく、各行が個別に考慮されることを意味します。output
^
各行の先頭に一致する正規表現です。\t
前の正規表現の各一致 (つまり、各行の先頭) がタブ文字に置き換えられます。
例として、次のコード:
String output = "foo\nbar\nbaz\n"
String indented = output.replaceAll("(?m)^", "\t");
System.out.println(indented);
次の出力が生成されます。
ふー バー バズ
于 2013-04-08T21:11:38.677 に答える