single
Challenge: Searching Within Strings
Desliza para mostrar el menú
Método find()
A veces, es necesario buscar un texto específico dentro de un string. Esto se puede hacer utilizando los métodos .find() o .rfind(). Comencemos con el método .find().
find.h
1str.find("text to find")
Devuelve el índice del primer carácter de la primera coincidencia.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
También se puede especificar la posición del primer carácter en la cadena que se debe considerar en la búsqueda. Esto se realiza utilizando el argumento pos. Cualquier carácter antes del índice pos se ignora en la búsqueda.
Ejemplo de búsqueda de la primera aparición de "code" comenzando desde el tercer carácter.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Método rfind()
También es posible localizar la última aparición de un texto utilizando el método .rfind().
rfind.h
1str.rfind("text to find")
Mientras que .find() recupera la primera aparición de un texto, .rfind() encuentra la última aparición y significa búsqueda inversa.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
Cuando .find() o .rfind() no pueden localizar la subcadena, devuelven string::npos. Este es una constante numérica que representa una posición no válida. Se almacena como el valor más grande posible de size_t, lo que facilita detectar búsquedas fallidas.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Desliza para comenzar a programar
Estás desarrollando un filtro de correo electrónico simple. Tu objetivo es permitir que los usuarios se registren con cualquier correo electrónico y marcar como permitidos los correos provenientes de codefinity.com.
La función isAllowedEmail recibe un email como string.
- Utiliza
rfind()para encontrar el último símbolo'@'en el correo electrónico. - Compara el resultado de
rfindcon-1para verificar si existe el símbolo'@'. Si no se encuentra ningún'@', devuelvefalseporque el correo es inválido. - Inicializa una variable de tipo string llamada
domaincomo una cadena vacía. - Utiliza un bucle
forcomenzando desdeatPos + 1hasta la longitud deemailpara iterar sobre los caracteres después del'@'. - En cada iteración, agrega el carácter a la variable
domain. - Si
domaines igual a"codefinity.com", devuelvetrue. De lo contrario, devuelvefalse.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla