571

如何在 Java 中获得依赖于平台的换行符?我不能"\n"到处使用。

4

9 回答 9

743

Java 7 现在有一个System.lineSeparator()方法。

于 2012-06-07T18:05:42.250 回答
654

您可以使用

System.getProperty("line.separator");

获取行分隔符

于 2008-10-16T09:39:26.937 回答
374

除了 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

于 2008-10-16T18:45:40.893 回答
43

如果您尝试将换行符写入文件,您可以简单地使用 BufferedWriter 的newLine()方法。

于 2008-10-16T18:49:15.550 回答
31

这也是可能的:String.format("%n").

或者String.format("%n").intern()节省一些字节。

于 2013-04-25T14:48:48.980 回答
22

commons-lang库有一个可用的常量字段,称为SystemUtils.LINE_SEPARATOR

于 2012-03-28T16:33:54.407 回答
17
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();

上面的代码片段将有两个由新行分隔的字符串,而与平台无关。

于 2015-09-29T11:20:31.210 回答
13

如果您正在使用实例写入文件,请使用该BufferedWriter实例的newLine()方法。它提供了一种独立于平台的方式来在文件中写入新行。

于 2012-01-20T12:24:21.707 回答
-4

避免使用 String + String 等附加字符串,请改用 StringBuilder。

String separator = System.getProperty( "line.separator" );
StringBuilder lines = new StringBuilder( line1 );
lines.append( separator );
lines.append( line2 );
lines.append( separator );
String result = lines.toString( );
于 2012-12-05T08:53:13.207 回答