2012-04-10 24 views
17

Tengo una cadena larga.Añadir retorno de carro a una cadena

string s1 = "'99024','99050','99070','99143','99173','99191','99201','99202','99203','99204','99211','99212','99213','99214','99215','99217','99218','99219','99221','99222','99231','99232','99238','99239','99356','99357','99371','99374','99381','99382','99383','99384','99385','99386','99391','99392'"; 

Quiero

string s2 = 
      "'99024', 
      '99050', 
      '99070', 
      '99143', 
      '99173', 
      '99191', 
      '99201', 
      '99202',...."; 

En otras palabras. Quizás le gusta:

string s2 = "'99024',"+'\n'+"'99050',"+'\n'+"'99070',"+'\n'+"'99143',"+'\n'+.....; 

Necesito un código conciso. Quizás LINQ. Gracias.

+0

@ user1108948 técnicamente, lo que quiere es una "nueva línea", no "retorno de carro" – codechimp

Respuesta

20
string s2 = s1.Replace(",", ",\n"); 
+0

Probablemente querrá s1.Replace (",", "n \"). TrimEnd (',', '\ n'); para eliminar el par final – blowdart

+0

Lo sé, solo para ser rápido, publicar sin probar :) –

+0

@blowdart Usted supone que su es una coma al final. No hay – Servy

34
string s2 = s1.Replace(",", "," + Environment.NewLine); 

Además, sólo desde una perspectiva de rendimiento, así es como las tres soluciones actuales que he visto apilar hasta más de 100 mil iteraciones:

ReplaceWithConstant   - Ms: 328, Ticks: 810908 
ReplaceWithEnvironmentNewLine - Ms: 310, Ticks: 766955 
SplitJoin      - Ms: 483, Ticks: 1192545 

ReplaceWithConstant:

string s2 = s1.Replace(",", ",\n"); 

ReplaceWithEnvironmentNewLine:

string s2 = s1.Replace(",", "," + Environment.NewLine); 

SplitJoin:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 

ReplaceWithEnvironmentNewLine y ReplaceWithConstant están dentro del margen de error de unos a otros, por lo que no hay diferencia funcional.

Usando Environment.NewLine se prefiere en "\n" para la legibilidad sake y consistencia similar al uso de String.Empty en lugar de "".

+0

Creo que nadie prueba su código. no es 'reemplazar' –

+0

@ L.B Normalmente publico y luego pruebo ya que lamentablemente el tiempo de respuesta es crítico. Capturó el error en LinqPad unos segundos después de la publicación. –

+0

Ver mi comentario en otra respuesta :) –

0
string s2 = s1.Replace(",", ",\n") + ",...."; 
0

Otra opción:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 
0

Environment.NewLine debe utilizarse como dijo Dan Rigby, pero hay un problema con el String.Empty. Permanecerá siempre vacío, independientemente de si se lee antes o después de su lectura. Ayer tuve un problema en mi proyecto con eso. Lo eliminé y funcionó de la manera en que se suponía. Es mejor declarar la variable y luego llamarla cuando sea necesario. String.Empty siempre lo mantendrá vacío a menos que la variable deba inicializarse, y solo entonces deberías usar String.Empty. Pensé que lanzaría este tid-bit para todos como lo he experimentado.

-1

cadena s2 = s1.Replace (",", ", \ r \ n");

+0

Esta respuesta ya existe y está a punto de cumplir 5 años. ¿Por qué la respuesta a una pregunta tan antigua que no agrega nada nuevo? – gilliduck

Cuestiones relacionadas