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
Alternativamente, un iterador también se puede usar para producir los índices secuencialmente:
public static Ienumerable
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 ListAllIndexesOf(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); } }
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