2010-02-10 5 views
10

Ich möchte eine Zeichenfolge in eine Zeichenfolge [] unter Verwendung einer Zeichenfolge als Trennzeichen aufteilen.Wie spalte ich eine Zeichenfolge mit einer Zeichenfolge in C#

String delimit = "[break]"; 
String[] tokens = myString.Split(delimit); 

Aber die obige Methode funktioniert nur mit einem Zeichen als Trennzeichen.

Jeder Nehmer?

+0

ich durchweg das auch gefragt haben. Anstatt also string.split() zu verwenden, habe ich stattdessen auf die alte Visula Basic Split-Funktion zurückgegriffen. Wo Sie MyArray = Split (TheString, Delimiter) tun. Es ist dort und einfach zu verwenden, wenn Sie vb.net programmieren, also habe ich nie versucht, dieses weiter zu untersuchen. Daher wird es interessant sein, die Antworten hier zu lesen. – Stefan

Antwort

26

So:

mystring.Split(new string[] { delimit }, StringSplitOptions.None); 

Aus irgendeinem Grund sind die einzigen Überlastungen von Split, die einen String nehmen Sie es als ein Array nehmen, zusammen mit einem StringSplitOptions. Ich habe keine Ahnung, warum es keine string.Split(params string[]) Überlastung gibt.

+0

Große Antwort. Arbeitete zum ersten Mal. =) – Kieran

+0

Whaaat das ist zu cool. –

+0

Eigentlich gibt es auch keine 'String.Split (char)' Überladung. Es gibt jedoch eine 'String.Split (params char [])' Überladung, und das ist es, was es erlaubt, sie mit einem einzigen 'char' aufzurufen. Der Grund, warum es keine 'String.Split (params string [])' Überladung gibt, liegt darin, dass Sie keine zwei Params-Überladungen haben können, weil das Aufrufen von 'String.Split()' ohne Parameter mehrdeutig wäre. – Sven

4

Ich persönlich bevorzuge, so etwas zu verwenden, da regex diese Spaltung hat:

public static string[] Split(this string input, string delimit) 
{ 
    return Regex.Split(input, delimit); 
} 
+4

+1 um auf der sicheren Seite zu sein Ich empfehle 'Regex.Escape (delimit)' zu verwenden, um alle Metazeichen zu umgehen, die Teil des Trennzeichens sein könnten. –

+3

Da die Zeichenfolge nicht wirklich eine Regex ist, hat es keinen Sinn, den Regex-Parser aufzurufen. – SLaks

+0

'Regex.Split' analysiert die Eingabe zuerst, was teuer ist, und teilt dann die Ausgabe der ** Übereinstimmungen ** –