Búsqueda en Strings
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 3 de 56.
Tres comprobaciones rápidas para saber si una subcadena se encuentra dentro de otra:
let email = "alice@coddy.tech"
print(email.contains("@")) // true
print(email.hasPrefix("alice")) // true
print(email.hasSuffix(".tech")) // truecontains toma cualquier subcadena, mientras que hasPrefix y hasSuffix solo miran al principio o al final. Todos ellos son sensibles a mayúsculas y minúsculas, así que convierte la cadena a minúsculas primero si eso importa.
Combina estos con ! para una prueba rápida de "ausencia":
if !email.contains("@") {
print("not a valid email")
}Desafío
FácilLee una sola línea de entrada. Valídala como un email simple comprobando todo lo siguiente:
- Contiene exactamente un
@(usafilter+counten los caracteres) - No comienza ni termina con
@ - Termina con
.tech,.com, o.org(insensible a mayúsculas)
Imprime valid cuando todas las comprobaciones pasen, de lo contrario imprime invalid. Compara contra la versión en minúsculas de la entrada.
Para la entrada alice@CODDY.TECH, la salida es valid.
Hoja de referencia
Comprueba si una cadena contiene una subcadena, o si comienza/termina con una:
let email = "alice@coddy.tech"
email.contains("@") // true – en cualquier lugar de la cadena
email.hasPrefix("alice") // true – al principio
email.hasSuffix(".tech") // true – al finalLos tres distinguen entre mayúsculas y minúsculas. Usa .lowercased() primero si es necesario:
email.lowercased().hasSuffix(".tech")Usa ! para comprobar la ausencia:
if !email.contains("@") { print("not a valid email") }Pruébalo tú mismo
let line = readLine()!
// TODO: validar exactamente un '@', no en los extremos, sufijo en [.tech .com .org]
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabras