5 Stimmen

Warum scheint mein Versuch, Strings in einer List<string> zu trimmen, nicht zu funktionieren?

Ich habe den folgenden Code in LINQPad ausprobiert und die unten angegebenen Ergebnisse erhalten:

List<string> listFromSplit = new List<string>("a, b".Split(",".ToCharArray())).Dump();
listFromSplit.ForEach(delegate(string s) 
{ 
  s.Trim(); 
});
listFromSplit.Dump();

"a" und "b"

Der Buchstabe b wurde also nicht, wie ich erwartet hatte, aus dem Leerraum entfernt...?

Hat jemand eine Idee?

[HINWEIS: die .Dump()-Methode ist eine Erweiterungsmethode in LINQPad, die den Inhalt eines beliebigen Objekts in einer schönen, intelligent formatierten Weise ausgibt]

1voto

akuhn Punkte 26637

Ich habe noch keine IDE, aber das sollte reichen (wenn ich mich nicht irre):

var result = from each in listFromSplit select each.Trim();

0voto

tvanfosson Punkte 506878

Trennen Sie sowohl Leerzeichen als auch Kommas und entfernen Sie alle leeren Einträge. Alles schön zurechtgerückt. Allerdings wird davon ausgegangen, dass Ihre Zeichenketten keine Leerzeichen enthalten.

List<string> listFromSplit =
     new List<string>( "a , b ".Split( new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries ));

0voto

frax Punkte 423

Die linq-Optionen, die andere bereitgestellt haben, sollten gut funktionieren. Als weitere Option ist hier eine Erweiterungsmethode mit einer for-Schleife:

    public static void TrimCollection(this IList<string> stringCollection) {

        for (int i = 0; i <= stringCollection.Count() - 1; i++)
            stringCollection[i] = stringCollection[i].Trim();

    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X