为包含\ n的printf动态构造一个格式String

时间:2016-12-26 13:58:41

标签: java

我正在尝试printf一个字符串,其中字段宽度由变量给出,而不是在格式字符串中硬编码。另外,我希望printf在新行上启动字符串。

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

输出(初始换行未显示在stackoverflow格式化程序中):

>Hello World                     <

这里的cheverons不是命令行提示,而是直观地确认字段的宽度。

但是,如果我尝试动态构造格式字符串,使用尽可能正确的转义序列,我无法获得初始返回&amp;新行字符实际上导致返回&amp;新行。

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输出。

有人能告诉我正确的技术是什么吗?

1 个答案:

答案 0 :(得分:0)

不要硬编码"\r\n",这只是Windows的正确行分隔符。使用%n。像,

String myFormat = "%n>%-" + TEXT_LENGTH+ "s<";