2012-01-19 24 views
166

Duplicar posible:
How do I split a string by a multi-character delimiter in C#?¿Cómo puedo dividir una cadena con un delimitador de cadena?

tengo esta cadena:

My name is Marco and I'm from Italy 

me gustaría dividirlo, con el delimitador is Marco and, por lo que debería obtener una matriz con

  • My name en [0] y
  • I'm from Italy en [1].

¿Cómo puedo hacerlo con C#?

intentado con

.Split("is Marco and") 

pero quiere un solo carbón.

+4

[Este] (http://stackoverflow.com/questions/1126915/how -do-i-split-a-string-by-a-multi-character-delimiter-in-c) se ha preguntado antes. –

+0

relacionado https://stackoverflow.com/questions/315358/c-sharp-syntax-split-string-into-array-by-comma-convert-to-generic-list-and – barlop

Respuesta

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

Si tiene un delimitador de un solo carácter (como por ejemplo ,), puede reducirlo a (tenga en cuenta las comillas simples):

string[] tokens = str.Split(','); 
+0

puede eliminar 'cadena':' .Split (nuevo [] {"es Marco y"}, StringSplitOptions.None) ' – pomber

+4

' nueva cadena [] 'es redundante en ese caso, podría simplemente use 'new []' – pomber

+4

Observe las comillas simples en str.Split (','); en lugar de str.Split (","); Me tomó un tiempo darme cuenta de – gsubiran

4

Puede utilizar el método IndexOf para obtener una ubicación de la cadena y dividirla utilizando esa posición y la longitud de la cadena de búsqueda.


También puede usar la expresión regular. Un simple google search resultó con este

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); 
    } 
    } 
} 
22
.Split(new string[] { "is Marco and" }, StringSplitOptions.None) 

Considerar los espacios surronding "is Marco and". ¿Desea incluir los espacios en su resultado o quiere que se eliminen? Es muy posible que desea utilizar como separador " is Marco and " ...

8

Pruebe this function en su 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); 
15

Estás dividiendo una cadena en una cadena secundaria bastante compleja. Usaría expresiones regulares en lugar de String.Split. Lo posterior es más para tokenizar tu texto.

Por ejemplo:

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

Lea esto: http://www.dotnetperls.com/split y la solución puede ser algo como:

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