15

複数行の文字列をシステム コンソールに書き込み、そのテキスト ブロックをインデントする方法を提案できる人はいますか? コマンド ライン プログラムのヘルプを表示するためだけに使用されているため、比較的軽量なものを探しています。

4

2 に答える 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 に答える