¿Cómo obtengo una nueva línea dependiente de la plataforma en Java? No puedo usar "\n"
en todas partes.¿Cómo obtengo un nuevo carácter de línea dependiente de la plataforma?
Respuesta
Además de la propiedad line.separator, si está utilizando Java 1.5 o posterior y la String.Format (u otro formatear métodos) que puede utilizar %n
como en
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 ^^
Ver el Java 1.8 API for Formatter para más detalles.
Puede utilizar
System.getProperty("line.separator");
para obtener el separador de línea
Si usted está tratando de escribir una nueva línea en un archivo, simplemente podría utilizar el método de BufferedWriter newLine().
uso del método de la clase newLine()
BufferedWriter
que proporciona la plataforma de manera independiente para escribir la nueva línea en el archivo
La biblioteca commons-lang tiene un campo constante disponible, llamado SystemUtils.LINE_SEPARATOR
Sí, ¡instale una biblioteca de terceros solo para obtener una nueva línea independiente de la plataforma! #facepalm –
@Shervin por supuesto que no harías eso, pero muchos proyectos en los que he trabajado ya están usando commons-lang y alguna versión anterior de Java. Entonces, si ya estás usando commons-lang, esta es una respuesta sensata. No me pareció necesario señalar eso, obviamente estaba equivocado. – lexicalscope
Esto es de hecho una buena sugerencia para proyectos que ya están usando esta biblioteca, ¡gracias! –
Java 7 tiene ahora un método System.lineSeparator()
.
Habría sido muy amable al proporcionar un método sobrecargado 'lineSeperator (int)' que devuelve una cierta cantidad de separadores de línea, ya que a menudo me encuentro usando 2 a la vez. – Kon
@Kon Basado en [esta respuesta] (http://stackoverflow.com/a/24946101/594137): 'String.join (" ", Collections.nCopies (5, System.lineSeparator()))' –
Evita concatenar cadenas utilizando cuerdas + String etc, utilizar StringBuilder lugar.
String separator = System.getProperty("line.separator");
StringBuilder lines = new StringBuilder(line1);
lines.append(separator);
lines.append(line2);
lines.append(separator);
String result = lines.toString();
Esto en realidad no importa en la mayoría de los casos, [Jeff Atwood, de Coding Horror, hizo una publicación en un blog sobre este tipo particular de micro-optimización] (http://www.codinghorror.com/blog/2009/01/the-sad-tragedy-of -micro-optimization-theater.html). Siempre haga métricas antes de hacer afirmaciones como "do not do' string + string' ". – Spoike
Diría que el artículo de Jeff puede estar un poco apagado ya que solo toca el tiempo de ejecución. La concatenación de cadenas en Java no solo se trata de la velocidad de ejecución sino también de la cantidad de basura que deja en la memoria para que el GC la limpie, lo que puede hacer que el GC funcione con mayor frecuencia. Esto podría o no ser un problema dependiendo de su entorno y configuración. – Lajcik
Lajcik, sospecho que es una optimización previa para todos los casos, excepto para aquellos que realmente hacen mucha manipulación de cadenas. StringBuffer es un anti-patrón para requisitos de concatenación menores. En muchos casos prefiero tener String1 + separator + String2 legible que el ejemplo multilínea mencionado anteriormente. Además, sugeriría probar si la memoria y el GC se ven impactados positivamente al agregar el SB. En muchos casos, supongo que no lo es. Si no vale la pena probarlo, probablemente sea una optimización previa y me centraré en la legibilidad. –
Esto también es posible: String.format("%n")
.
O String.format("%n").intern()
para ahorrar algo de bytes.
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
El fragmento de arriba tendrá dos cadenas separadas por una nueva línea, independientemente de las plataformas.
- 1. ¿Cómo agregar un nuevo carácter de línea en node.js?
- 2. ¿Nuevo carácter de línea en VB.Net?
- 3. comportamiento ambiguo del nuevo carácter de línea
- 4. ¿Cómo obtengo cada línea de un NSString?
- 5. Cómo insertar un nuevo carácter de línea después de un número fijo de caracteres en un archivo
- 6. ¿Es posible poner un nuevo carácter de línea en una línea de eco en un archivo por lotes?
- 7. ¿Por qué obtengo una "excepción no compatible con la plataforma" al agregar un nuevo encabezado de respuesta?
- 8. R - ¿Debo agregar un nuevo carácter de línea explícito con print()?
- 9. ¿Cómo puedo hacer que fgetcsv() de PHP reconozca el nuevo carácter de línea Classic Mac (CR)?
- 10. Mover al carácter de fin de línea en Vi, pasar el último carácter en la línea
- 11. Detectar un carácter de nueva línea
- 12. nuevo problema de línea con netcat
- 13. ¿Cómo imprimir un carácter a la vez en una línea?
- 14. ¿Cómo puedo escapar de un nuevo carácter de línea en un archivo .ini para que Zend_Config_Ini lo lea literalmente?
- 15. Carácter de nueva línea en stringbuilder
- 16. Cómo obtengo el carácter STX de hex 02
- 17. ¿Cómo agregar el carácter de nueva línea en app.config?
- 18. ¿Cómo obtengo el último carácter de una cadena?
- 19. ¿Cómo obtengo un WGD DataGrid para guardar los cambios de nuevo en la base de datos?
- 20. reemplazar \ n con el nuevo código de carácter de línea real
- 21. ¿Cómo obtengo la línea de comandos que inició el proceso?
- 22. ¿Cómo agregar un carácter nueva línea en la porción de cadena de un ActionLink?
- 23. Eliminar último carácter/línea
- 24. cadena de JavaScript carácter de nueva línea?
- 25. std :: async: ¿uso dependiente de la implementación?
- 26. ¿Cómo obtengo la posición de la línea base de texto en una etiqueta y un NumericUpDown?
- 27. ¿Cómo obtengo un nuevo bean de sesión con estado en un subproceso de servlet?
- 28. ¿Cómo obtengo la ruta completa para un argumento de línea de comandos de nombre de archivo?
- 29. BASH: Tira carácter de nueva línea de cuerda (leer línea)
- 30. Carácter PHP de fin de línea para un archivo csv
¡Gracias! Estoy seguro de que System.getProperty ("line.separator"); tiene sus usos, pero me canso de ver: "Línea 1" + System.getProperty ("line.separator") + "Línea 2" – Buttons840
Oh, "Línea 1" + System.getProperty ("line.separator") + "Línea 2" es de hecho una de las cosas más feas que he visto en mi vida. Simplemente declarar una constante en otro lugar sería menos doloroso. – abahgat
esto no funciona, al menos, con una cadena entrando en una sentencia log4j. Crear un ejemplo con una nueva línea al final puede ocultar el problema. Además, la cadena s2 es sólo confuso usando '%% n' –