2013-04-08 9 views
6

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

+1

あなたは改行を含む文字列を持っていますか、またはあなたが自動折り返しをしたいですか、または実行複数の行があり、いくつかの表形式で並べ替える必要がありますか?一言で言えば、入力と望ましい出力の例を挙げてください。 @Arian。 – Cephalopod

+1

私は自動ラッピングをご希望です。マニュアルページのフォーマットに似た何か。私は軽量なことを望んでいましたが、おそらく何らかの種類のテンプレート言語が唯一の方法です。 – BillMan

+0

単語が行幅を超えるたびに、スペースで文字列を分割し、改行を挿入するとどうなりますか? – Cephalopod

答えて

26

注:下記の方法は、質問のコメントで@BillManで記述された更新された要件を満たしていません。このは、がコンソール行の長さより長い行を自動的に折り返しません。折り返しが問題でない場合にのみ、この方法を使用してください。次のように


簡単なオプションとして、 String.replaceAll()を使用することができます:あなたはJavaの正規表現で慣れていない場合は、次のよう

String output = <your string here> 
String indented = output.replaceAll("(?m)^", "\t"); 

が、それは動作します:

  • (?m)は複数行モードを有効にします。つまり、outputの各行は、outputを1行として扱う代わりに、個別に考慮されます(これがデフォルトです)。
  • ^は、各行の先頭に一致する正規表現です。
  • \tは、前の正規表現の各一致(つまり、各行の開始)をタブ文字に置き換えます。例として

、次のコード:

String output = "foo\nbar\nbaz\n" 
String indented = output.replaceAll("(?m)^", "\t"); 
System.out.println(indented); 

は、この出力を生成します

 
	foo 
	bar 
	baz 
+0

私はこれがOPが探しているものとは思えません。長すぎるとコンソールで囲まれ、インデントされません。ここで必要とされるのは、a)N文字の制限(たとえば80文字)にラップしますが、単語を分割し、b)ラップされたものであっても各行をインデントする方法です。 – joelittlejohn

+1

@joelittlejohn:あなたが正しい - 更新された要件(私は最後にこの質問を見た*後のコメントとして追加された)は、私が記述したアプローチでは満たされません。しかし、それは依然として同様の要件を持つ他の人にとって有益な助言になるかもしれません。私は一番上にその旨の免責を追加しました。それを私の注意を引くことに感謝します。 – Mac

関連する問題