2016-12-26 34 views
-1

我試圖printf一個字符串,其中字段寬度由變量給出,而不是在格式字符串中進行硬編碼。另外,我希望printf在新行上啓動字符串。動態地爲printf創建一個格式字符串,其中包含 n

System.out.printf("\r\n>%-32s<", "Hello World"); //works ok 

輸出(初始換行符不會在計算器格式化顯示):

>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個輸出。

誰能告訴我什麼是正確的技術?

+0

的可能的複製[如何在Java格式字符串(http://stackoverflow.com/questions/6431933/how-to-format-strings-in-java) – DimaSan

+1

我不明白它......即使你知道'\ r \ n'工作正常,你爲什麼要用'\\ r \\ n'? – Tom

回答

0

不要硬編碼"\r\n",這只是Windows的一個正確的行分隔符。使用%n。像,

String myFormat = "%n>%-" + TEXT_LENGTH+ "s<"; 
相關問題