14 Stimmen

Entfernen von Zeichen aus Zeichenketten mit LINQ

Ich versuche, meine LINQ aufzufrischen, indem ich einige einfache Erweiterungsmethoden schreibe. Gibt es eine bessere Möglichkeit, eine solche Funktion wie unten zu schreiben, die eine bestimmte Liste von Zeichen aus einer Zeichenfolge (mit LINQ) entfernt?

Es hilft mir, zuerst an die Erweiterungsmethoden zu denken, auf die sich LINQ stützt:

public static string Remove(this string s, IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    return new string(s.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
}

Aber das ist ziemlich hässlich. Ergo LINQ.

Der Unterschied, den ich in der LINQ-Anweisung bemerke, ist, dass ich "select" verwenden muss, während ich das bei der Erweiterungsmethode nicht muss.

/// <summary>Strip characters out of a string.</summary>
/// <param name="chars">The characters to remove.</param>
public static string Remove(this string s, IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    var stripped = from c in s.ToCharArray()
                   where !removeChars.Contains(c)
                   select c;

    return new string(stripped.ToArray());
}

Also ich frage mich, wenn dies (letzte Schnipsel oben) ist die kürzeste LINQ-Anweisung zum Entfernen von Zeichen zu erreichen.

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