Dividir y unir
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 4 de 56.
Dos herramientas cotidianas para trabajar con texto delimitado. Ambas provienen de Foundation, que ya está importado.
components(separatedBy:) divide una cadena en un arreglo de Strings según el delimitador que pases:
let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts) // ["red", "green", "blue"]Lo inverso es joined(separator:) en cualquier [String]:
let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line) // "swift is fun"A menudo los combinarás: dividirlos, transformarlos con map y volverlos a unir. El resultado de map en un [String] sigue siendo un [String], por lo que joined funciona directamente.
Desafío
FácilLee una sola línea de entrada: una lista de palabras separadas por comas.
Imprime tres líneas:
- El número de palabras después de dividir por
, - Las palabras reunidas con
>(espacio, mayor que, espacio), en mayúsculas - La palabra más larga de la lista (después de dividir). Si dos palabras empatan, usa la que aparece primero.
Para la entrada red,green,blue, la salida es:
3
RED > GREEN > BLUE
greenHoja de referencia
Divide una cadena en un array usando components(separatedBy:):
let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]Vuelve a unir un array de cadenas usando joined(separator:):
let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"Patrón común — dividir, transformar con map, volver a unir:
let result = "red,green,blue"
.components(separatedBy: ",")
.map { $0.uppercased() }
.joined(separator: " > ")
// "RED > GREEN > BLUE"Pruébalo tú mismo
let line = readLine()!
let words = line.components(separatedBy: ",")
// TODO: imprimir el conteo, unido en mayúsculas con " > ", la primera palabra más larga
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