2013-12-18 5 views
15

Ich wollte eine durch Kommas getrennte Zeichenfolge in ein Zeichenfolgenarray konvertieren und Leerzeichen sowie leere Einträge entfernen. Um zum Beispiel die Eingabe gegeben:Teilen Sie eine durch Komma getrennte Zeichenfolge, während Leerzeichen und leere Einträge entfernt werden

string valueString = "sam, mike, , ,john , Tom and jerry , "; 

Das erwartete Ergebnis würde die folgenden Werte (getrimmt, natürlich) sein:

sam 
mike 
john 
Tom and Jerry 

ich die folgende Codezeile versucht haben, die die Werte trimmt, aber dies fehlschlägt „leere“ Einträge zu entfernen:

valueString.Split(',').Select(sValue => sValue.Trim()).ToArray(); 

Was wäre der beste Weg zu gehen über Trimmen der Eingabe und Reinigung und leere Einträge, die in den Prozess führen könnte?

+0

Welches Problem haben Sie mit ihm? Haben Sie einen Fehler erhalten? – MikeSmithDev

Antwort

32

Die Verwendung von Trim mit StringSplitOptions.RemoveEmptyEntries funktioniert nicht, da " " nicht als leerer Eintrag gilt. Sie müssen eine normale Aufteilung vornehmen, dann jedes Element zuschneiden und dann die leeren Zeichenfolgen ausfiltern.

valueString.Split(',') 
    .Select(x => x.Trim()) 
    .Where(x => !string.IsNullOrWhiteSpace(x)) 
    .ToArray(); 
+0

'new {','}' das ist falsch. – MikeSmithDev

+0

sollte es 'new [] {','}' sein –

0

Aufbauend auf der Antwort von Anthony, das wird es in eine kommagetrennte Zeichenfolge zurück konvertiert auch:

valueString = string.Join(",", valueString.Split(',') 
    .Select(x => x.Trim()) 
    .Where(x => !string.IsNullOrWhiteSpace(x)) 
    .ToArray()) 
Verwandte Themen