Iterando sobre Strings P2
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 72 de 86.
Assim como usamos enumerated() com arrays para obter tanto o índice quanto o elemento, podemos fazer o mesmo com strings. Isso é útil quando você precisa saber a posição de cada caractere durante a iteração.
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tEsta técnica é útil ao construir novas strings com base em posições de caracteres. Por exemplo, você pode querer manter apenas os caracteres em índices pares:
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceObserve que convertemos char em uma String usando String(char) antes de anexá-la. Isso é necessário porque result é uma String, e você não pode anexar diretamente um Character a ela usando o operador +=.
Desafio
FácilEscreva uma função extractOddIndexChars que recebe text e retorna uma nova string contendo apenas os caracteres nos índices ímpares.
Use enumerated() para iterar pela string e construir um resultado contendo caracteres onde o índice é ímpar (1, 3, 5, etc.).
Parâmetros:
text(String): A string de entrada para processar
Retorna: Uma string contendo apenas os caracteres nos índices ímpares (String)
Exemplo: Se text for "abcdefg", a função deve retornar "bdf" (caracteres nos índices 1, 3 e 5).
Folha de consulta
Use enumerated() com strings para obter tanto o índice quanto o caractere durante a iteração:
let word = "Swift"
for (index, char) in word.enumerated() {
print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: tAo construir strings com base nas posições dos caracteres, converta Character para String antes de anexar:
let text = "abcdef"
var result = ""
for (index, char) in text.enumerated() {
if index % 2 == 0 {
result += String(char)
}
}
print(result) // aceUse String(char) para converter um Character em uma String ao anexar com +=.
Experimente você mesmo
func extractOddIndexChars(text: String) -> String {
// Escreva o código aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa