J'ai cette ficelle:
My name is Marco and I'm from Italy
Je voudrais le scinder, avec le délimiteur is Marco and
, donc je devrais obtenir un tableau avec
My name
en [0] etI'm from Italy
en [1].Comment puis-je le faire avec C #?
J'ai essayé avec:
.Split("is Marco and")
Mais il ne veut qu'un seul caractère.
string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None);
Si vous avez un seul séparateur de caractères (comme par exemple ,
), vous pouvez le réduire à (notez les guillemets simples):
string[] tokens = str.Split(',');
.Split(new string[] { "is Marco and" }, StringSplitOptions.None)
Considérez les espaces entourant "is Marco and"
. Voulez-vous inclure les espaces dans votre résultat ou souhaitez-vous les supprimer? Il est fort possible que vous souhaitiez utiliser " is Marco and "
comme séparateur ...
Vous divisez une chaîne sur une sous-chaîne assez complexe. J'utiliserais des expressions régulières au lieu de String.Split. Ce dernier est plus pour vous tokeniser le texte.
Par exemple:
var rx = new System.Text.RegularExpressions.Regex("is Marco and");
var array = rx.Split("My name is Marco and I'm from Italy");
Essayez cette fonction à la place.
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);
Vous pouvez utiliser la méthode IndexOf
pour obtenir un emplacement de la chaîne et la scinder en utilisant cette position et la longueur de la chaîne de recherche.
Vous pouvez également utiliser une expression régulière. Un simple recherche google s'est avéré avec ceci
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);
}
}
}
Lire Exemples de chaînes de découpage C # - Perles de filet et la solution peut être quelque chose comme:
var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None);
Il existe une version de string.Split
qui prend un tableau de chaînes et un paramètre StringSplitOptions
: