2010-04-11 22 views
65

¿Cómo se agrega un nuevo carácter de línea (\ n \ r) en StringBuilder?Carácter de nueva línea en stringbuilder

+13

eso no es un salto de línea bajo cualquier sistema operativo común. Windows es \ r \ n, Mac es \ r, Unix y Linux son \ n. –

+0

Pedennentemente 'nueva línea' siempre es '\ n'. Era el personaje de desplazamiento platten en teletipos mecánicos. 'retorno de carro' siempre es '\ r'. Era el personaje de retorno de carro en teletipos. Cada sistema operativo puede interpretarlos de manera diferente. En Unix/Linux generalmente no se utiliza el retorno porque no es necesario porque ya no es un sistema mecánico. – Jay

+3

@Jay: un personaje que solo causa desplazamiento de platina no se denomina línea nueva, sino avance de línea. –

Respuesta

97

me gustaría hacer uso de Environment.NewLine Property

Algo así como

StringBuilder sb = new StringBuilder(); 
sb.AppendFormat("Foo{0}Bar", Environment.NewLine); 
string s = sb.ToString(); 

O

StringBuilder sb = new StringBuilder(); 
sb.Append("Foo"); 
sb.Append("Foo2"); 
sb.Append(Environment.NewLine); 
sb.Append("Bar"); 
string s = sb.ToString(); 

EDIT:

Si usted desea tener una nueva línea después de cada anexar , puedes echar un vistazo a @Ben Voigt respuesta.

+1

Es posible mezclar Append y AppendLine para obtener nuevas líneas donde las desee, no después de cada Append. Además, me vinculé a la versión de argumento cero de AppendLine que no agrega nada más que la secuencia de nueva línea. –

+0

He estado atrapado por append y luego appendline. Esperaba que el appendline agregara \ n luego mi cadena, pero appendline agrega la cadena luego el \ n - http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.appendline.aspx – Larry

+3

Stringbuilder. AppendLine() hace lo mismo que sb.Append (Environment.NewLine); También es más limpio, diría (http://msdn.microsoft.com/en-us/library/ebk18257.aspx) – Mulki

4

Anexará \n en Linux en su lugar \r\n.

1

También este trabajo

sb.Append(string.Format("Foo{0}Bar", Environment.NewLine)); 
1

Para múltiples líneas de la mejor manera que encuentro es que hacer esto:

 IEnumerable<string> lines = new List<string> 
     { 
      string.Format("{{ line with formatting... {0} }}", id), 
      "line 2", 
      "line 3" 
     }; 
     StringBuilder sb = new StringBuilder(); 
     foreach(var line in lines) 
      sb.AppendLine(line); 

De esta manera usted no tiene que saturar la pantalla con el medio ambiente. NewLine o AppendLine() repetidas varias veces. También será menos propenso a errores que tener que recordar escribirlos.

1

Usar cadena de constructor de la línea append funciones incorporadas

StringBuilder sb = new StringBuilder(); 
sb.AppendLine("first line "); 
sb.AppendLine("Second line "); 
sb.AppendLine("third line "); 

salida

de primera línea Segunda línea tercera línea

0

Esto es lo que yo uso,

StringBuilder stringBuilder = new StringBuilder(); 

      stringBuilder.Append("Some string 1" + "\n"); 
      stringBuilder.Append("Some string 2" + "\n"); 
Cuestiones relacionadas