Como divido uma string por um delimitador de vários caracteres em C #?

E se eu quiser dividir uma string usando um delimitador que é uma palavra?

Por exemplo, This is a sentence .

Eu quero dividir is e obter This e a sentence .

Em Java , posso enviar uma string como um delimitador, mas como faço isso em C# ?

http://msdn.microsoft.com/pt-br/library/system.string.split.aspx

Exemplo dos documentos:

 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); } 

Você pode usar o método Regex.Split , algo assim:

 Regex regex = new Regex(@"\bis\b"); string[] substrings = regex.Split("This is a sentence"); foreach (string match in substrings) { Console.WriteLine("'{0}'", match); } 

Edit : Isso satisfaz o exemplo que você deu. Observe que um String.Split comum também será dividido no ” is ” no final da palavra “This”, portanto, por que usei o método Regex e incluí os limites de palavra em torno de ” is “. Note, no entanto, que se você acabou de escrever este exemplo com erro, então String.Split provavelmente será suficiente.

Com base nas respostas existentes neste post, isso simplifica a implementação 🙂

 namespace System { public static class BaseTypesExtensions { ///  /// Just a simple wrapper to simplify the process of splitting a string using another string as a separator ///  ///  ///  ///  public static string[] Split(this string s, string separator) { return s.Split(new string[] { separator }, StringSplitOptions.None); } } } 
 string s = "This is a sentence."; string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None); for(int i=0; i 

EDIT: o "é" é preenchido em ambos os lados com espaços na matriz para preservar o fato de que você deseja que a palavra "é" removida da sentença e a palavra "this" permaneça intacta.

…Em resumo:

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

Você pode usar String.Replace () para replace sua string dividida desejada por um caractere que não ocorra na string e depois usar String.Split nesse caractere para dividir a string resultante para o mesmo efeito.

Ou use este código; (same: new String [])

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

Aqui está uma function de extensão para fazer o split com um separador de string:

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

Exemplo de uso:

 string mystring = "one[split on me]two[split on me]three[split on me]four"; var splitStrings = mystring.Split("[split on me]"); 
 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="to=xxx@gmail.com=yyy@yahoo.co.in"; string[] tokens = line.Split(new char[] { '=' }, 2, 0); ans: tokens[0]=to token[1]=xxx@gmail.com=yyy@yahoo.co.in 
 string strData = "This is much easier" int intDelimiterIndx = strData.IndexOf("is"); int intDelimiterLength = "is".Length; str1 = strData.Substring(0, intDelimiterIndx); str2 = strData.Substring(intDelimiterIndx + intDelimiterLength, strData.Length - (intDelimiterIndx + intDelimiterLength));