Question

How do I get a platform-dependent newline in Java? I can’t use "\n" everywhere.

Was it helpful?

Solution

In addition to the line.separator property, if you are using java 1.5 or later and the String.format (or other formatting methods) you can use %n as in

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   ^^

See the Java 1.8 API for Formatter for more details.

OTHER TIPS

Java 7 now has a System.lineSeparator() method.

You can use

System.getProperty("line.separator");

to get the line separator

If you're trying to write a newline to a file, you could simply use BufferedWriter's newLine() method.

This is also possible: String.format("%n").

Or String.format("%n").intern() to save some bytes.

The commons-lang library has a constant field available called SystemUtils.LINE_SEPARATOR

If you are writing to a file, using a BufferedWriter instance, use the newLine() method of that instance. It provides a platform-independent way to write the new line in a file.

StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();

The above snippet will have two strings separated by a new line irrespective of platforms.

Avoid appending strings using String + String etc, use StringBuilder instead.

String separator = System.getProperty( "line.separator" );
StringBuilder lines = new StringBuilder( line1 );
lines.append( separator );
lines.append( line2 );
lines.append( separator );
String result = lines.toString( );
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top