我正在尝试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输出。
有人能告诉我正确的技术是什么吗?
答案 0 :(得分:0)
不要硬编码"\r\n"
,这只是Windows的正确行分隔符。使用%n
。像,
String myFormat = "%n>%-" + TEXT_LENGTH+ "s<";