StringBuilder result = new StringBuilder();
result.append(someChar);
Ahora quiero agregar un carácter de nueva línea al StringBuilder. ¿Cómo puedo hacerlo?
result.append("/n");
No funciona. Entonces, estaba pensando en escribir una nueva línea usando Unicode. ¿Esto ayudará? Si es así, ¿cómo puedo agregar uno?
pensé que es "\n"o System.getProperty("line.separator").
–Alvin Wong
26 de enero de 2013 a las 7:16
A nueva línea no es necesariamente un carácter de CAMBIO DE LÍNEA (LF) (Ascii/Unicode 10). Como señala la respuesta correcta, en Java puede obtener uno (CAMBIO DE LÍNEA o una nueva línea específica de la plataforma).
– Basil Bourque
18 de marzo de 2014 a las 3:54
Jayamohan
Debería ser
r.append("\n");
Pero te recomiendo que hagas lo siguiente,
r.append(System.getProperty("line.separator"));
System.getProperty("line.separator") le da una nueva línea dependiente del sistema en java. También desde Java 7 hay un método que devuelve el valor directamente: System.lineSeparator()
+1 para el acceso directo System.lineSeparator. La gran pregunta es por qué no hay un StringBuilder#appendLine() método.
– Patricio M.
11/03/2015 a las 19:26
System.lineSeparator() la documentación menciona “Devuelve la cadena de separador de línea dependiente del sistema”. Esto no es independiente de la plataforma. Use este código si necesita escribir una cadena que usará el sistema operativo subyacente; de lo contrario, use '\n'.
– tuscland
2 de junio de 2015 a las 7:05
@tuscland – ¿Por qué no usar System.lineSeparator() todo el tiempo? ¿Por qué ‘\n’ es una mejor opción por defecto?
– Ryanfae Escocia
3 de junio de 2015 a las 15:46
No, System.lineSeparator() debe usarse cuando se trata de recursos no portátiles (es decir, recursos específicos del sistema operativo subyacente). Tiene un valor diferente si está ejecutando Java en Windows (\r\n) o Unix (\n). Si utiliza System.lineSeparator() todo el tiempo, por lo tanto, producirá archivos no portátiles.
– tuscland
04/06/2015 a las 16:26
Increíble que no haya ya un appendLine sobrecarga en StringBuilder.
– josh m.
21 de junio de 2018 a las 18:54
Medio duplex
Otra opción es usar Apache Commons StrBuilder, que tiene la funcionalidad que falta en StringBuilder.
A partir de la versión 3.6, StrBuilder ha quedado obsoleto en favor de TextStringBuilder que tiene la misma funcionalidad
… y desde Java 8 hay Unión de cadenascual “se utiliza para construir una secuencia de caracteres separados por un delimitador y, opcionalmente, comenzando con un prefijo proporcionado y terminando con un sufijo proporcionado.” Usar “\n” como delimitador daría como resultado nuevas líneas (excepto la última). Internamente, usa un StringBuilder. El mismo enfoque podría realizarse usando Google Guava Joiner, supongo.
-Jechterhoff
6 de diciembre de 2017 a las 10:48
… y ahora esto es deprecated. Por favor use org.apache.commons.text.TextStringBuilder.
Asi que r.append('\n'); o r.append("\n"); trabajará (StringBuilder tiene métodos sobrecargados para char y String escribe).
Kansas
Creo una clase original similar a StringBuidler y puedo agregar una línea llamando al método appendLine(String str).
public class StringBuilderPlus {
private StringBuilder sb;
public StringBuilderPlus(){
sb = new StringBuilder();
}
public void append(String str)
{
sb.append(str != null ? str : "");
}
public void appendLine(String str)
{
sb.append(str != null ? str : "").append(System.getProperty("line.separator"));
}
public String toString()
{
return sb.toString();
}
}
Uso:
StringBuilderPlus sb = new StringBuilderPlus();
sb.appendLine("aaaaa");
sb.appendLine("bbbbb");
System.out.println(sb.toString());
Consola:
aaaaa
bbbbb
Rashida Hasán
puedes usar line.seperator para agregar una nueva línea en
avestruz
También puede utilizar el carácter separador de línea en String.format (Ver java.util.Formatter), que también es independiente de la plataforma.
es decir:
result.append(String.format("%n", ""));
Si necesita agregar más espacios de línea, simplemente use:
result.append(String.format("%n%n", ""));
También puedes usar StringFormat para formatear toda la cadena, con una(s) nueva(s) línea(s) al final.
result.append(String.format("%10s%n%n", "This is my string."));
Desarrollador Boc
Además de la respuesta de KS de crear una clase StringBuilderPlus y utilizar el patrón de adaptador para ampliar una clase final, si utiliza genéricos y devuelve el objeto StringBuilderPlus en los nuevos métodos append y appendLine, puede utilizar los muchos métodos append de StringBuilders para todos los tipos diferentes, al tiempo que recupera la capacidad de encadenar varios comandos adjuntos, como se muestra a continuación
public class StringBuilderPlus {
private final StringBuilder stringBuilder;
public StringBuilderPlus() {
this.stringBuilder = new StringBuilder();
}
public <T> StringBuilderPlus append(T t) {
stringBuilder.append
return this;
}
public <T> StringBuilderPlus appendLine(T t) {
stringBuilder.append
return this;
}
@Override
public String toString() {
return stringBuilder.toString();
}
public StringBuilder getStringBuilder() {
return stringBuilder;
}
}
luego puede usar esto exactamente como la clase StringBuilder original:
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
pensé que es
"\n"
oSystem.getProperty("line.separator")
.–Alvin Wong
26 de enero de 2013 a las 7:16
A nueva línea no es necesariamente un carácter de CAMBIO DE LÍNEA (LF) (Ascii/Unicode 10). Como señala la respuesta correcta, en Java puede obtener uno (CAMBIO DE LÍNEA o una nueva línea específica de la plataforma).
– Basil Bourque
18 de marzo de 2014 a las 3:54