Como faço para obter um novo caractere de linha dependente de plataforma?
-
03-07-2019 - |
Pergunta
Como faço para obter uma nova linha dependente de plataforma em Java? Eu não posso usar "\n"
em todos os lugares.
Solução
Além da propriedade line.separator, se você estiver usando java 1.5 ou posterior e o String.format (ou outra formatação métodos), pode utilizar %n
como em
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 ^^
Veja a Java 1.8 API para Formatter para mais detalhes.
Outras dicas
Java 7 tem agora um href="http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#lineSeparator--"> método System.lineSeparator() .
Você pode usar
System.getProperty("line.separator");
para obter o separador de linha
Se você está tentando escrever uma nova linha em um arquivo, você pode simplesmente usar nova linha () método .
Esta também é possível:. String.format("%n")
Ou String.format("%n").intern()
para salvar alguns bytes.
O commons-lang biblioteca tem um campo constante disponível chamado SystemUtils.LINE_SEPARATOR
Se você está escrevendo para um arquivo, usando uma instância BufferedWriter
, use o método newLine()
dessa instância. Ele fornece uma maneira independente de plataforma para escrever a nova linha em um arquivo.
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
O trecho acima terá duas cordas separadas por uma nova linha, independentemente das plataformas.
Evite acrescentar strings usando Cordas + Cordas etc, use StringBuilder em vez.
String separator = System.getProperty( "line.separator" );
StringBuilder lines = new StringBuilder( line1 );
lines.append( separator );
lines.append( line2 );
lines.append( separator );
String result = lines.toString( );