Como posso dividir uma string com um delimitador de string?

Eu tenho essa string:

My name is Marco and I'm from Italy 

Eu gostaria de dividi-lo, com delimitador is Marco and , então eu deveria ter uma matriz com

  • My name em [0] e
  • I'm from Italy em [1].

Como posso fazer isso com c #?

Tentei com

 .Split("is Marco and") 

mas quer apenas um único char.

 string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None); 

Se você tiver um único caractere delimitador (como por exemplo), você pode reduzir isso para (observe as aspas simples):

 string[] tokens = str.Split(','); 
 .Split(new string[] { "is Marco and" }, StringSplitOptions.None) 

Considere os espaços por aí "is Marco and" . Você deseja include os espaços em seu resultado ou deseja removê-los? É bem possível que você queira usar " is Marco and " como separador …

Você está dividindo uma string em uma sub string bastante complexa. Eu usaria expressões regulares em vez de String.Split. O último é mais para tokenizing texto.

Por exemplo:

 var rx = new System.Text.RegularExpressions.Regex("is Marco and"); var array = rx.Split("My name is Marco and I'm from Italy"); 

Tente esta function em seu lugar.

 string source = "My name is Marco and I'm from Italy"; string[] stringSeparators = new string[] {"is Marco and"}; var result = source.Split(stringSeparators, StringSplitOptions.None); 

Você pode usar o método IndexOf para obter um local da string e dividi-lo usando essa posição e o tamanho da string de pesquisa.


Você também pode usar expressões regulares. Uma simples pesquisa no google acabou com isso

 using System; using System.Text.RegularExpressions; class Program { static void Main() { string value = "cat\r\ndog\r\nanimal\r\nperson"; // Split the string on line breaks. // ... The return value from Split is a string[] array. string[] lines = Regex.Split(value, "\r\n"); foreach (string line in lines) { Console.WriteLine(line); } } } 

Há uma versão do string.Split que usa um array de strings e um parâmetro StringSplitOptions :

http://msdn.microsoft.com/pt-br/library/tabh47cf.aspx

Leia isto: http://www.dotnetperls.com/split e a solução pode ser algo como:

 var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None);