-1
書式文字列にハードコードされているのではなく、変数によってフィールド幅が指定された文字列をprintfしようとしています。さらに、printfが新しい行の文字列を開始するようにしたい。は、 nを含むprintfの書式文字列を動的に構築します。
System.out.printf("\r\n>%-32s<", "Hello World"); //works ok
出力(初期改行はstackoverflowのフォーマッタに表示されません):
>Hello World <
ここcheveronsはラインプロンプトコマンドが、視覚的にフィールドの幅を確認しているされていません。
しかし、正しいエスケープシーケンスを見る限りでは、フォーマット文字列を動的に構築しようとすると、実際に戻り値&改行を返すために、最初の戻り値&改行文字を取得できません。
import java.util.*;
class DynamicFormatStringTest {
private static final int TEXT_LENGTH = 32;
public static void main(String[] args){
String myFormat = "\\r\\n>%-" + TEXT_LENGTH+ "s<";
//System.out.println(myFormat); //prints \r\n>%-32s<
System.out.printf(myFormat, "Hello World");
}
}
出力:
\r\n>Hello World <
私はリテラル\ rを\ nの出力を取得しています。
誰でも正しい技術が何であるか教えてください。
可能な重複私は得ることはありません[どのようにJavaで文字列をフォーマットする](http://stackoverflow.com/questions/6431933/how-to-format-strings-in-java) – DimaSan
それは... \ r \ nが正しく動作することを知っていたのになぜ '\\ r \\ n'を使うのですか? – Tom