作者:家具销售_903 | 2023-09-03 22:46
如何在Java中获得与平台相关的换行符?我不能"\n"
到处使用.
1> StriplingWar..:
Java 7现在有一个System.lineSeparator()
方法.
@Kon基于[这个答案](http://stackoverflow.com/a/24946101/594137):`String.join("",Collections.nCopies(5,System.lineSeparator()))`
本来非常好的提供一个重载方法`lineSeperator(int)`,它返回一些行分隔符,因为我经常发现自己一次使用2.
使用Java 11:`System.lineSeparator().repeat(5)`
@JacobG停止高兴..我们中有些人仍然停留在Java 7上。
2> abahgat..:
您可以使用
System.getProperty("line.separator");
得到行分隔符
注意添加Java 7`System.lineSeparator()`的详细信息,所以这里是这个问题的明确答案?
3> Alex B..:
除了line.separator属性,如果您使用的是Java 1.5或更高版本和的String.format(或其他格式的方法),可以使用%n
在
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY%n", c);
//Note `%n` at end of line ^^
String s2 = String.format("Use %%n as a platform independent newline.%n");
// %% becomes % ^^
// and `%n` becomes newline ^^
有关更多详细信息,请参阅Java 1.8 API for Formatter.
哦,我的,"Line 1"+ System.getProperty("line.separator")+"Line 2"确实是我见过的最丑陋的东西之一.只是在别处宣布一个常数就不那么痛苦了.
@KonstantinWeitz,`String.format(s +"%n")`的问题很容易被`String.format("%s%n",s)`解决.将用户输入作为格式体(与`eval()`相同)总是有风险的.
谢谢!我确定System.getProperty("line.separator"); 有它的用途,但我厌倦了看到:"第1行"+ System.getProperty("line.separator")+"第2行"
如果你的字符串可能包含来自用户输入的`%`,请不要使用它!
这至少在字符串进入log4j语句时不起作用.在最后创建一个带换行符的示例可能会隐藏问题.而且,String s2只是使用'%% n'而混淆
4> Michael Myer..:
如果您尝试在文件中写入换行符,则只需使用BufferedWriter的newLine()方法即可.
5> ceving..:
这也是可能的:String.format("%n")
.
或者String.format("%n").intern()
保存一些字节.
哦,现在我明白了.他在答案中写了这么多未提及的东西.;-)
这与Alex B的答案相同.
6> lexicalscope..:
该公地郎库有一个可用的恒定场称为SystemUtils.LINE_SEPARATOR
@Shervin当然你不会这样做,但我曾经使用过的许多项目已经在使用commons-lang和一些旧版Java.所以如果你恰好使用了公共语言,那么这是一个明智的答案.我觉得没有必要指出这一点,我显然是错的.
是的,安装第三方库只是为了获得平台独立的新行!#facepalm
对于已经使用此库的项目,这确实是一个很好的建议,谢谢!
7> 小智..:
如果使用BufferedWriter
实例写入文件,请使用该实例的newLine()
方法.它提供了一种独立于平台的方式来在文件中写入新行.
8> Sathesh Bala..:
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
无论平台如何,上面的代码片段都有两个由新行分隔的字符串.