Domanda

Come posso ottenere una newline dipendente dalla piattaforma in Java? Non posso & # 8217; t usare " \ n " ovunque.

È stato utile?

Soluzione

Oltre alla proprietà line.separator, se si utilizza java 1.5 o versione successiva e i String.format (o altri metodi formattazione ) è possibile utilizzare % n come 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   ^^

Vedi API Java 1.8 per Formatter per maggiori dettagli.

Altri suggerimenti

Java 7 ora ha un System.lineSeparator () metodo.

Puoi usare

System.getProperty("line.separator");

per ottenere il separatore di riga

Se stai cercando di scrivere una nuova riga in un file, potresti semplicemente usare metodo newLine () .

Questo è anche possibile: String.format ("% n ") .

O String.format ("% n "). intern () per salvare alcuni byte.

La libreria commons-lang ha un campo costante disponibile chiamato SystemUtils.LINE_SEPARATOR

Se stai scrivendo su un file, usando un'istanza BufferedWriter , usa il metodo newLine () di quell'istanza. Fornisce un modo indipendente dalla piattaforma per scrivere la nuova riga in un file.

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

Lo snippet sopra avrà due stringhe separate da una nuova linea indipendentemente dalle piattaforme.

Evita di aggiungere stringhe usando String + String ecc., usa invece 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( );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top