it-swarm.com.de

Wie teile ich eine Zeichenfolge in C # durch ein Trennzeichen mit mehreren Zeichen auf?

Was ist, wenn ich eine Zeichenfolge mit einem Trennzeichen teilen möchte, das ein Wort ist?

Zum Beispiel This is a sentence.

Ich möchte auf is aufteilen und This und a sentence Erhalten.

In Java kann ich eine Zeichenfolge als Trennzeichen senden, aber wie kann ich dies in C# Ausführen?

225
Saobi

http://msdn.Microsoft.com/en-us/library/system.string.split.aspx

Beispiel aus den Dokumenten:

string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result;

// ...
result = source.Split(stringSeparators, StringSplitOptions.None);

foreach (string s in result)
{
    Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
276
bruno conde

Sie können die Regex.Split -Methode verwenden, etwa so:

Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");

foreach (string match in substrings)
{
   Console.WriteLine("'{0}'", match);
}

Bearbeiten : Dies entspricht dem von Ihnen gegebenen Beispiel. Beachten Sie, dass ein gewöhnlicher String.Split auch am Ende des Wortes "This" geteilt wird warum ich die Regex -Methode verwendet und die Wortgrenzen um das " ist " eingefügt habe. Beachten Sie jedoch, dass String.Split wahrscheinlich ausreicht, wenn Sie dieses Beispiel nur irrtümlich geschrieben haben.

54
IRBMe

Basierend auf den vorhandenen Antworten zu diesem Beitrag vereinfacht dies die Implementierung :)

namespace System
{
    public static class BaseTypesExtensions
    {
        /// <summary>
        /// Just a simple wrapper to simplify the process of splitting a string using another string as a separator
        /// </summary>
        /// <param name="s"></param>
        /// <param name="pattern"></param>
        /// <returns></returns>
        public static string[] Split(this string s, string separator)
        {
            return s.Split(new string[] { separator }, StringSplitOptions.None);
        }


    }
}
33
eka808
string s = "This is a sentence.";
string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None);

for(int i=0; i<res.length; i++)
    Console.Write(res[i]);

BEARBEITEN: Das "ist" wird auf beiden Seiten mit Leerzeichen im Array aufgefüllt, um die Tatsache zu bewahren, dass Sie nur das Wort "aus dem Satz entfernen wollen und das Wort" dies "bleiben sollen intakt.

28
ahawker

...Zusamenfassend:

string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
8
ParPar

Sie können String.Replace () verwenden, um die gewünschte geteilte Zeichenfolge durch ein Zeichen zu ersetzen, das in der Zeichenfolge nicht vorkommt, und anschließend String.Split für dieses Zeichen verwenden, um die resultierende Zeichenfolge für denselben Effekt zu teilen.

5
Paul Sonier

Oder verwenden Sie diesen Code. (selbe: neuer String [])

.Split(new[] { "Test Test" }, StringSplitOptions.None)
4
Cagdas

Hier ist eine Erweiterungsfunktion, um die Aufteilung mit einem Stringseparator durchzuführen:

public static string[] Split(this string value, string seperator)
{
    return value.Split(new string[] { seperator }, StringSplitOptions.None);
}

Anwendungsbeispiel:

string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
2
SteveD
var dict = File.ReadLines("test.txt")
               .Where(line => !string.IsNullOrWhitespace(line))
               .Select(line => line.Split(new char[] { '=' }, 2, 0))
               .ToDictionary(parts => parts[0], parts => parts[1]);


or 

    enter code here

line="[email protected][email protected]";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);

ans:
tokens[0]=to
token[1][email protected][email protected]
0
Prabu