Rechercher une sous-chaîne dans une chaîne en C#

Muhammad Maisam Abbas 12 octobre 2023
Rechercher une sous-chaîne dans une chaîne en C#

Ce didacticiel abordera la méthode d’extraction du texte entre deux mots dans une chaîne en C#.

Extraire du texte d’une chaîne en C#

Si nous avons une variable chaîne qui a une valeur comme Hi, I am a string variable et que nous voulons trouver le texte entre les mots Hi et string, nous pouvons utiliser la méthode String.IndexOf() avec la méthode String.SubString() pour atteindre cet objectif.

La méthode String.IndexOf(x) récupère l’index d’une chaîne particulière x à l’intérieur de la chaîne. La méthode String.SubString(x, y) extrait une sous-chaîne à partir de l’index de début x et de l’index de fin y. Nous pouvons obtenir les indices des chaînes de début et de fin à l’intérieur de la chaîne principale avec la fonction String.IndexOf(). On peut alors extraire le texte entre les deux chaînes en passant les indices des deux mots à la fonction String.SubString(). L’exemple de code suivant nous montre comment extraire du texte d’une chaîne avec les méthodes String.IndexOf() et String.SubString() en C#.

using System;

namespace text_from_string {
  class Program {
    public static string stringBetween(string Source, string Start, string End) {
      string result = "";
      if (Source.Contains(Start) && Source.Contains(End)) {
        int StartIndex = Source.IndexOf(Start, 0) + Start.Length;
        int EndIndex = Source.IndexOf(End, StartIndex);
        result = Source.Substring(StartIndex, EndIndex - StartIndex);
        return result;
      }

      return result;
    }
    static void Main(string[] args) {
      string s = "Hi, I am a string variable.";
      string word1 = "Hi";
      string word2 = "string";
      string text = stringBetween(s, word1, word2);
      Console.WriteLine(text);
    }
  }
}

Production:

, I am a

Dans le code ci-dessus, nous définissons la fonction stringBetween() qui prend la chaîne principale et les deux mots comme paramètres et renvoie les textes entre les mots à l’intérieur de la chaîne principale. Nous avons initialisé l’index de départ StartIndex du texte avec l’instruction Source.IndexOf(Start, 0) + Start.Length. Cette instruction récupère l’index de la chaîne Start à l’intérieur de la chaîne Source puis l’incrémente avec la longueur de la chaîne Start afin que le Start ne vienne pas dans le résultat du texte. La même procédure est effectuée pour l’index de fin EndIndex du texte. Nous avons ensuite renvoyé le texte en donnant le StartIndex comme index de départ et EndIndex-StartIndex comme la longueur de la nouvelle chaîne à la fonction String.SubString().

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp String