Identificar subcadenas en C#
Oct 4, 2011 Codigos C# 7 comentarios
En este post veremos como saber en C# si una palabra contiene una subcadena dada. Por ejemplo, “puntopeek” contiene la subcadena “peek”? Para solucionar este problema, seguiremos la siguiente idea:
Algoritmo
1. Buscamos los dos primeros caracteres que coincidan
2. A partir de esa posicion recorremos la palabra hasta ver si coincide completamente
3. Si no coinciden, volvemos al paso 1
Código en C#
public static bool Contiene(string palabra, string cadena) { for (int i = 0; i <= palabra.Length-cadena.Length; i++) //Si encontramos dos letras iguales if(palabra[i]==cadena[0]) { bool contenida = true; //Recorremos la cadena desde la posición 1 //y comparamos con la palabra a partir de //la posición donde las dos letras iguales for (int j = 1; j < cadena.Length; j++) if (palabra[i + j] != cadena[j]) contenida = false; //Si esta contenida if(contenida) return true; } //Si no está contenida return false; }
Notas
Es importante notar que aunque String, es una clase en C#, se puede tratar como un array de caracteres, y que el for se hace hasta palabra.Length-subcadena.Length, para que no de excepción. Si quieres saber más sobre este tema, puedes ver un post que escribí hace un tiempo sobre la clase String en C#. También hay que decir que este ejercicio se puede hacer de otra forma más eficiente usando String Matching y algoritmos como KMP, pero no es el objetivo de este post.
Creo que el código está bien comentado, pero cualquier pregunta en los comentarios.
Descargar Ejemplo
Puedes descargar este y otros ejemplos de string usando C#
Compartir:
Relacionados
algunos artículos que te pueden interesarLa clase String en C#
Ago 22, 2009 | Tutoriales C# | 4 comentarios
Ejercicios resueltos de string en C#
Abr 22, 2010 | Codigos C# | 18 comentarios
Tres formas de Invertir un String
Oct 3, 2009 | Codigos C# | 5 comentarios
7 comentarios
Forma parte de nuestra discusión y síguela de cerca[...] Fuente:aquí Categoria(s): .NET, C#Tags: c#, string, subcadena Menús en XML para Android [...]
Autor: Identificar subcadenas | Informática, programación, noticias, tecnología … | Fecha: Oct 10, 2011.
genial tu blog!! necesito resolver problemas más problemás .. me fue mal en un test …
Autor: writkas | Fecha: Oct 19, 2011.
como crítica -constructiva-.
podrías poner en el título “problema: este es el problema”
con una estructura del post parecida –>
Problema: el problema es este
Solución
algoritmo
1..
2…
3 ..
Código:
printf(“ss”);
Saludos
Autor: writkas | Fecha: Oct 19, 2011.
@writkas: tienes razón, trabajaré en eso… necesito organizar las cosas un poco más
Autor: Tom | Fecha: Oct 20, 2011.
Otra forma es usar palabra.IndexOf(“peek”), devuelve -1 si no encuentra la sub cadena deseada. Ignoro qué tan eficiente es este método, pero para cadenas pequeñas, de unas cuantas decenas de palabras de longitud, es buena idea usarlo.
Autor: yelinna | Fecha: Oct 27, 2011.
hola de nuevo
una consulta pequeña. ¿Cuál crees que es la mejor forma de llamar a los array, simplemente array o vector para los array unidimencionales y matriz para los array con dos dimenciones?
No se si me puedes responder :-/ saludos
Autor: writkas | Fecha: Nov 2, 2011.
Buen aporte…
Autor: Ricardo | Fecha: Nov 7, 2011.