当前位置:  开发笔记 > 编程语言 > 正文

如何获得与平台相关的新行字符?

如何解决《如何获得与平台相关的新行字符?》经验,为你挑选了8个好方法。

如何在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();

无论平台如何,上面的代码片段都有两个由新行分隔的字符串.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有