如何使“%n”等于“\ n”

时间:2015-05-12 19:41:57

标签: java string

如果在Windows上运行此代码,为什么b不等于true

System.setProperty("line.separator", "\n");
String s=String.format("%n");
boolean b="\n".equals(s);

即使在Windows上,我希望s"\n"而非"\r\n"

2 个答案:

答案 0 :(得分:5)

不幸的是,这里唯一的方法是反思:

Field lineSeparator = System.class.getDeclaredField("lineSeparator");

lineSeparator.setAccessible(true);
lineSeparator.set(null, "\n");

答案 1 :(得分:3)

问题是,lineSeparator是在System类中定义和初始化的。

在致电System.setPropety()之前,System课程已经初始化,lineSeparator此时已初始化为系统属性。它以后不会改变。

您必须在命令行选项...

上传递系统属性

或者,可以使用反射来强制更改System.lineSeparator字段。这不能保证有效。