Maison > développement back-end > C++ > Comment puis-je trouver toutes les occurrences d'une sous-chaîne dans une chaîne plus grande en C# ?

Comment puis-je trouver toutes les occurrences d'une sous-chaîne dans une chaîne plus grande en C# ?

Barbara Streisand
Libérer: 2024-12-28 22:52:15
original
678 Les gens l'ont consulté

How Can I Find All Occurrences of a Substring within a Larger String in C#?

Recherche de toutes les positions de sous-chaînes dans une chaîne plus grande en C#

Lorsque vous travaillez avec de grandes chaînes, la localisation de toutes les instances d'une sous-chaîne spécifique peut être cruciale pour l'analyse et l'analyse des données. Cet article aborde le défi consistant à trouver toutes ces instances et à stocker leurs index dans une liste.

Énoncé du problème

Vous disposez d'une grande chaîne que vous devez analyser. Dans cette chaîne, vous devez identifier et stocker les positions de chaque occurrence d'une sous-chaîne spécifique. Supposons que l'exemple de chaîne soit "extrait" (moi, j'ai beaucoup de] ponctuation. " Vous souhaitez rechercher toutes les occurrences de cette sous-chaîne dans la chaîne plus grande et ajouter leurs index à une liste.

Résolution

Méthode 1 :

La méthode IndexOf en C# peut être utilisée pour localiser la première occurrence de une sous-chaîne. Cependant, pour trouver toutes les occurrences, nous devons utiliser une boucle pour parcourir la chaîne et continuer la recherche jusqu'à ce qu'aucune autre instance ne soit trouvée.

Cette technique peut être améliorée en utilisant une méthode d'extension pour créer la sous-chaîne. code plus concis. Voici un exemple de méthode d'extension :

public static List<int> AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    List<int> indexes = new List<int>();
    for (int index = 0;; index += value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            return indexes;
        indexes.Add(index);
    }
}
Copier après la connexion

Méthode 2 :

Alternativement, un itérateur peut également être utilisé. pour générer les index de manière séquentielle :

public static IEnumerable<int> AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    for (int index = 0;; index += value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            break;
        yield return index;
    }
}
Copier après la connexion

Ces deux méthodes peuvent être facilement ajoutées à n'importe quel objet chaîne, ce qui facilite la recherche de toutes les positions de sous-chaîne. Par exemple, la ligne suivante trouverait toutes les occurrences de la sous-chaîne "foo. " dans la chaîne "fooStringfooBar":

List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal