2012-04-10 13 views
17

Ich habe eine lange Zeichenfolge.Hinzufügen Wagenrücklauf zu einer Zeichenfolge

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'"; 

Ich möchte

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

Mit anderen Worten. Vielleicht mag es:

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

Ich brauche einen prägnanten Code. Vielleicht LINQ. Vielen Dank.

+0

@ user1108948 technisch, was Sie wollen ein "Newline" nicht "Wagenrücklauf" – codechimp

Antwort

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

Sie werden wahrscheinlich s1.Replace (",", ", \ n"). TrimEnd (',', '\ n'); um das nachfolgende Paar zu entfernen. – blowdart

+0

Ich weiß, nur um schnell zu sein, posten ohne zu testen :) –

+0

@blowdart Sie nehmen an, dass sie ein abschließendes Komma ist. Es ist nicht. – Servy

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

Auch nur aus Sicht der Leistung, ist hier, wie die drei aktuellen Lösungen, die ich habe über 100k Iterationen stapeln gesehen:

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 und ReplaceWithConstant liegen innerhalb der Fehlergrenze der jeweils anderen, so gibt es keinen Unterschied funktionell.

Mit Environment.NewLine sollte über "\n" aus Gründen der Lesbarkeit und Konsistenz ähnlich String.Empty zu verwenden anstelle von "" bevorzugt werden.

+0

Ich denke niemand testet seinen Code. es ist nicht "ersetzen" –

+0

@ L.B Ich posten normalerweise dann Test seit leider Reaktionszeit ist kritisch. Der Fehler in LinqPad wurde einige Sekunden nach dem Senden abgefangen. –

+0

Siehe meinen Kommentar in anderer Antwort :) –

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

Eine weitere Option:

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

Environment.NewLine verwendet werden soll, als Dan Rigby sagte, aber es gibt ein Problem mit dem String.Empty. Es bleibt immer leer, egal ob es vor oder nach dem Lesen gelesen wird. Ich hatte gestern ein Problem in meinem Projekt. Ich entfernte es und es funktionierte so, wie es sollte. Es ist besser, die Variable zu deklarieren und sie dann aufzurufen, wenn sie benötigt wird. String.Empty wird immer leer bleiben, es sei denn die Variable muss initialisiert werden, nur dann sollten Sie String.Empty verwenden. Ich dachte, ich würde dieses Kleingeld für jeden loswerden, wie ich es erlebt habe.

-1

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

+0

Diese Antwort existiert bereits und Sie sind etwa 5 Jahre zu spät. Warum die Antwort auf so eine alte Frage, die nichts Neues hinzufügt? – gilliduck

Verwandte Themen