280 votes

Comment puis-je diviser une chaîne avec un délimiteur de chaîne ?

J'ai cette chaîne :

 My name is Marco and I'm from Italy

Je voudrais le diviser, avec le délimiteur is Marco and , donc je devrais obtenir un tableau avec

  • My name à [0] et
  • I'm from Italy à [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.

579voto

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

Si vous avez un seul délimiteur de caractère (comme par exemple , ), vous pouvez le réduire à (notez les guillemets simples) :

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

31voto

atornblad Points 5599
.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 voulez-vous qu'ils soient supprimés ? Il est fort possible que vous souhaitiez utiliser " is Marco and " comme séparateur...

19voto

Huusom Points 1523

Vous divisez une chaîne sur une sous-chaîne assez complexe. J'utiliserais des expressions régulières au lieu de String.Split. Le dernier est plus pour la tokenisation de votre texte.

Par example:

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

14voto

DanTheMan Points 2287

Essayez plutôt cette fonction.

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

10voto

Patrick Points 6834

Vous pouvez utiliser la IndexOf pour obtenir un emplacement de la chaîne et la diviser en utilisant cette position et la longueur de la chaîne de recherche.


Vous pouvez également utiliser une expression régulière. Une simple recherche google s'est avérée 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);
    }
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X