Ich habe die Split()
Methode zum Teilen von Zeichenfolgen verwendet, aber dies scheint nur zu funktionieren, wenn Sie eine Zeichenfolge durch ein Zeichen teilen. Gibt es eine Möglichkeit, a zu teilen string
, wobei eine andere Zeichenfolge die Aufteilung nach Parameter ist?
Ich habe versucht, den Splitter ohne Glück in ein Zeichenarray umzuwandeln.
Mit anderen Worten, ich möchte Folgendes aufteilen string
:
THExxQUICKxxBROWNxxFOX
von xx
und geben ein Array mit Werten zurück:
DER SCHNELLE BRAUNE FUCHS
Antworten:
Um durch einen String zu teilen, müssen Sie die Überladung des String-Arrays verwenden .
quelle
string.Split
.string[] Split(string pattern)
ist die natürlichste Verwendung, die ich mir vorstellen kann, aber sie ist nicht vorhanden. Ich habe C schon einmal geschrieben, daher bin ich es gewohnt, Arrays zu chargen, aber ich hasse es immer noch, wenn eschar[]
in einem C # -Code auftaucht, weil es meine Aufmerksamkeit plötzlich von Stream-Ebene zu Byte-Ebene zieht. Weiß jemand, warum Leute aus der C # -Bibliothek die Split-Methode so entworfen haben? Wenn es einen guten Grund gibt, kann ich wahrscheinlich versuchen, ihn trotz der Unannehmlichkeiten zu schätzen.data.Split("xx")
?Es gibt eine Überladung von Split , die Zeichenfolgen benötigt.
Sie können eine dieser StringSplitOptions verwenden
Wenn die Zeichenfolge also "THExxQUICKxxxxBROWNxxFOX" lautet,
StringSplitOptions.None
wird ein leerer Eintrag im Array für den Teil "xxxx" zurückgegeben, während diesStringSplitOptions.RemoveEmptyEntries
nicht der Fall ist .quelle
ist die Art, wie ich es normalerweise mache.
Natürlich brauchen Sie:
oder :
aber andererseits brauche ich diese Bibliothek die ganze Zeit.
quelle
RegEx.Split
einiges teurer ist als ein einfachesString.Split
.Regex.Escape
die Zeichenfolge. Dadurch werden alle regulären Regex-Metazeichen ausgeblendet.Es gibt eine Überladung von String.Split dafür:
quelle
Im Allgemeinen verwende ich dafür gerne meine eigene Erweiterung:
Dies führt jedoch zu einer Ausnahme, wenn Microsoft beschließt, diese Methodenüberladung in späteren Versionen aufzunehmen. Dies ist auch der wahrscheinliche Grund, warum Microsoft diese Methode in der Zwischenzeit nicht aufgenommen hat: Mindestens ein Unternehmen, für das ich gearbeitet habe, hat eine solche Erweiterung in allen C # -Projekten verwendet.
Es kann auch möglich sein, die Methode zur Laufzeit bedingt zu definieren, wenn sie nicht vorhanden ist.
quelle
params string[] splitter
als zweiter Parameter und Änderungnew[] {splitter}
auf ,splitter
um mehrere Begrenzungszeichen zu unterstützen.Die vorherigen Antworten sind alle richtig. Ich gehe noch einen Schritt weiter und lasse C # für mich funktionieren, indem ich eine Erweiterungsmethode für String definiere:
Auf diese Weise kann ich es auf jede einfache Weise aufrufen, wie ich es beim ersten Versuch naiv erwartet hatte:
quelle
Ab .NET Core 2.0 gibt es eine Überschreibung, die eine Zeichenfolge erfordert.
Jetzt können Sie es also tun
"THExxQUICKxxBROWNxxFOX".Split("xx")
.Siehe https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_
quelle
Wählen Sie einfach das Ersetzungszeichen sorgfältig aus (wählen Sie eines aus, das wahrscheinlich noch nicht in der Zeichenfolge vorhanden ist)!
quelle
|
Zeichen bereits enthält? Aus diesem Grund halte ich die Verwendung für gefährlich.Das ist auch einfach:
quelle
"THExQUICK"
wo wir nicht wollen, dass es geteilt wirdDer einfachste Weg ist zu verwenden
String.Replace
:Oder einfacher:
quelle
xx
waren.