"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo encontrar todas las ocurrencias de una subcadena dentro de una cadena más grande en C#?

¿Cómo puedo encontrar todas las ocurrencias de una subcadena dentro de una cadena más grande en C#?

Publicado el 2025-03-23
Navegar:271

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

Encontrar todas las posiciones de subcadena en una cadena más grande en C#

cuando se trabaja con grandes cuerdas, localizar todas las instancias de una subcandética específica puede ser crucial para la parsing y el análisis de datos. Este artículo aborda el desafío de encontrar todas esas instancias y almacenar sus índices en una lista.

Declaración de problemas

tiene una cadena grande que necesita analizar. Dentro de esta cadena, debe identificar y almacenar las posiciones de cada ocurrencia de una subcadena específica. Supongamos que la cadena de ejemplo es "extraer \" (yo, tengo lotes. Sin embargo, para encontrar todas las ocurrencias, necesitamos usar un bucle para iterar a través de la cadena y continuar buscando hasta que no se encuentren más instancias.

esta técnica puede mejorarse utilizando un método de extensión para hacer que el código sea más conciso. if (string.isnullorempty (valor)) tirar nueva argumentoxception ("la cadena para encontrar puede no estar vacía", "valor"); List indexes = new List (); for (int index = 0 ;; index = value.length) { index = str.indexof (valor, índice); if (index == -1) índices de devolución; indexes.add (índice); } } Método 2:

Alternativamente, un iterador también se puede usar para producir los índices secuencialmente:

public static Ienumerable AllIndexesOf (esta cadena Str, String Value) { if (string.isnullorempty (valor)) tirar nueva argumentoxception ("la cadena para encontrar puede no estar vacía", "valor"); for (int index = 0 ;; index = value.length) { index = str.indexof (valor, índice); if (index == -1) romper; índice de retorno de rendimiento; } }

Ambos métodos se pueden agregar fácilmente a cualquier objeto de cadena, por lo que es conveniente encontrar todas las posiciones de subcadena. Por ejemplo, la siguiente línea encontraría todas las ocurrencias de subcadena "foo" dentro de la cadena "fooStringfoobar":

public static List AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    List indexes = new List();
    for (int index = 0;; index  = value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            return indexes;
        indexes.Add(index);
    }
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3