IndexOf
, IndexOfAny
und LastIndexOf
, LastIndexOfAny
scheinen das nicht zu tun (oder vielleicht tun sie das). Ich suche nach dem Equalent von% code% und find_first_not_of
von std :: string. Ich denke darüber nach, eine Erweiterungsklasse zu erstellen, aber ich bin mir nicht sicher, ob C # diese Funktionalität bereits bietet.
Oder, wenn Sie einige Nicht-LINQ-Erweiterungsmethoden bevorzugen. Diese sollten eine etwas bessere Leistung haben, besonders für FindLastNotOf
:
(Möglicherweise erhalten Sie eine bessere Leistung - sowohl in der LINQ- als auch in der nicht-LINQ-Version), wenn Sie chars
in eine HashSet<char>
oder vielleicht sogar eine einfache% -Zahl konvertieren co_de% array: Sie müssten einen Benchmark erstellen, um herauszufinden, obwohl jeder Unterschied wahrscheinlich vernachlässigbar ist, es sei denn char[]
wird ziemlich groß.)
Wenn die Verwendung von LINQ akzeptabel ist, können Sie die First () und
Wenn Sie beispielsweise die ersten und letzten Zeichen, die keine Vokale sind, möchten:
%Vor% BEARBEITEN: Obiges gibt die Zeichen zurück, nicht ihre Indizes. Um dies zu tun, können Sie die Indizes mit der Select () -Methode projizieren, aber Dinge wird haarig, da wir -1
zurückgeben müssen, wenn kein Zeichen übereinstimmt:
Alternativ ist hier eine weniger komplizierte Lösung basierend auf @ abatiishchevs Antwort:
%Vor%