2012-01-19 19 views
166

Eventuali duplicati:
How do I split a string by a multi-character delimiter in C#?Come posso dividere una stringa con un delimitatore di stringhe?

ho questa stringa:

My name is Marco and I'm from Italy 

vorrei dividerlo con delimitatore is Marco and, quindi dovrei ottenere un array con

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

Come posso farlo con C#?

provato con

.Split("is Marco and") 

ma vuole solo un singolo carattere.

+4

[Questo] (http://stackoverflow.com/questions/1126915/how -do-i-split-a-string-by-a-multi-character-delimitatore-in-c) è stato chiesto prima. –

+0

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

risposta

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

Se si dispone di un delimitatore di carattere singolo (come ad esempio ,), è possibile ridurlo a (notare le virgolette singole):

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

puoi rimuovere 'string':' .Split (nuovo [] {"è Marco e"}, StringSplitOptions.None) ' – pomber

+4

' nuova stringa [] 'è ridondante in tal caso, potresti solo usa 'new []' – pomber

+4

Nota le virgolette singole in str.Split (','); invece di str.Split (","); Mi ci è voluto un po 'per notare – gsubiran

4

È possibile utilizzare il metodo IndexOf per ottenere un percorso della stringa e dividerlo utilizzando tale posizione e la lunghezza della stringa di ricerca.


È inoltre possibile utilizzare l'espressione regolare. Un semplice google search si è rivelato con questo

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) 

Considerare gli spazi circostante "is Marco and". Vuoi includere gli spazi nel risultato o vuoi rimuoverli? E 'abbastanza possibile che si desidera utilizzare come separatore " is Marco and " ...

8

Prova invece a this function.

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

Si sta dividendo una stringa su una sottostringa piuttosto complessa. Userei le espressioni regolari invece di String.Split. Il dopo è più per tokenizzare il tuo testo.

Ad esempio:

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

Leggi questo: http://www.dotnetperls.com/split e la soluzione può essere qualcosa di simile:

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