850 Stimmen

Split eine Zeichenfolge durch eine andere Zeichenfolge in C #

Ich habe die Split() Methode zum Aufteilen von Zeichenketten, aber dies scheint nur zu funktionieren, wenn Sie eine Zeichenkette durch ein Zeichen aufteilen. Gibt es eine Möglichkeit zum Aufteilen einer string mit einer anderen Zeichenkette als Parameter für die Aufteilung durch?

Ich habe versucht, den Splitter in ein Zeichen-Array zu konvertieren, ohne Erfolg.

Mit anderen Worten, ich würde gerne die string :

THExxQUICKxxBROWNxxFOX

von xx und geben ein Array mit Werten zurück:

DER, FLINKE, BRAUNE, FUCHS

1521voto

Adam Robinson Punkte 176996

Um durch eine Zeichenkette zu trennen, müssen Sie die String-Array-Überlast .

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);

158voto

Greg Punkte 16177

Edit: Siehe @Danation's Antwort für neuere/weniger versbose Überlastung


Es gibt eine Überlastung von Split die Zeichenketten benötigt.

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

Sie können eine der folgenden StringSplitOptions verwenden

  • Keine - Der Rückgabewert enthält Array Elemente, die eine leere Zeichenkette enthalten
  • RemoveEmptyEntries - Der Rückgabewert enthält keine Array-Elemente, die eine leere Zeichenkette enthalten

Wenn die Zeichenfolge also "THExxQUICKxxxxBROWNxxFOX" lautet, StringSplitOptions.None gibt einen leeren Eintrag im Array für den Teil "xxxx" zurück, während StringSplitOptions.RemoveEmptyEntries wird nicht.

93voto

Peter Punkte 45640
Regex.Split(string, "xx")

ist die Art, wie ich es normalerweise mache.


Das brauchen Sie natürlich auch:

using System.Text.RegularExpressions;

oder :

System.Text.RegularExpressions.Regex.Split(string, "xx")

aber andererseits brauche ich diese Bibliothek ständig.

52voto

bruno conde Punkte 47059

Es gibt ein Übermaß an String.Split für diese:

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);

31voto

Lorenz Lo Sauer Punkte 22044

Im Allgemeinen verwende ich dafür gerne meine eigene Erweiterung:

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 

//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

Dies wird jedoch zu einer Ausnahme führen, wenn Microsoft beschließt, diese Methodenüberlastung in spätere Versionen aufzunehmen. Dies ist auch der wahrscheinliche Grund, warum Microsoft diese Methode in der Zwischenzeit nicht aufgenommen hat: Zumindest eine Firma, für die ich gearbeitet habe, hat eine solche Erweiterung in allen ihren C#-Projekten verwendet.

Es kann auch möglich sein, die Methode zur Laufzeit bedingt zu definieren, wenn sie nicht vorhanden ist.

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