2010-12-10 22 views
1

Ich habe eine Zeichenfolge wie "abc ,, bcd,";Entfernen Sie zusätzliche Kommas in C#

Die Ausgabe sollte abc, bcd sein, d. H. Die zusätzlichen Kommas sollten entfernt werden.

Hilfe benötigt

+0

Ist die Zeichenfolge enthalten Strings wie ""? –

Antwort

7
string result = Regex.Replace(input, ",+", ",").Trim(','); 
+0

Schön, wollte Ihnen sagen, dass Sie die nachlaufende Trim (',') vermisst haben. Aber ich sehe, du hast es danach repariert. –

0

Wie wäre es so etwas wie

string s = "abc,,bcd,"; 
s = s.Trim(','); 
while (s.Contains(",,")) 
    s = s.Replace(",,", ","); 
+0

Ich möchte darauf hinweisen, dass dieser Ansatz in einigen Fällen gefährlich sein kann (was zu einer Endlosschleife führt). Siehe http://stackoverflow.com/questions/1279859/how-to-replace-multiple-white-spaces-with-one-white-space/1279900#1279900 –

+0

Lasst uns hoffen, dass das asiatische Komma nicht anders ist als das Englische ein X-) –

0

Sie können versuchen, die Zeichenfolge in ein Array zu splitten. Dann durchlaufen Sie das Array. Überprüfen Sie, ob das aktuelle Element einen Wert hat, den Sie für akzeptabel halten. Diesen Wert an einen Stringbuilder anhängen. Wenn das nicht das letzte Element des Arrays ist, fügen Sie ein Komma an den Zeichenfolgengenerator an.

0
string input = "abc,,bcd,"; 

input.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Aggregate((a, b) => a + "," + b); 
+0

Verwenden Sie einfach 'string.Join' anstelle von' Aggregate'. Es ist besser lesbar und schneller (alles auf einmal). –

1
string input = "abc,,bcd,"; 
string output = String.Join(",", 
    input.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) 
); 
Verwandte Themen