Lição: 45: Manipulação de Strings e Expressões Regulares em Swift
Strings são um dos tipos de dados mais utilizados em programação, e Swift fornece um conjunto poderoso de recursos para manipulação de strings e uso de expressões regulares. Nesta aula, vamos explorar diversas técnicas de manipulação de strings e como utilizar expressões regulares para processamento avançado de texto.
Operações Básicas com Strings
Swift oferece vários métodos para manipulação de strings. Aqui estão algumas operações básicas:
Criando Strings
Você pode criar strings usando literais de string:
let saudacao = "Olá, Mundo!"
Concatenando Strings
Você pode concatenar strings usando o operador +
:
let nome = "Alice"
let mensagemDeBoasVindas = saudacao + " Meu nome é " + nome + "."
print(mensagemDeBoasVindas) // Olá, Mundo! Meu nome é Alice.
Interpolação de Strings
A interpolação de strings permite inserir valores dentro de strings:
let idade = 30
let mensagem = "Eu tenho \(idade) anos."
print(mensagem) // Eu tenho 30 anos.
Comprimento da String
Para obter o comprimento de uma string, use a propriedade count
:
let frase = "Olá"
print("O comprimento da frase é \(frase.count).") // O comprimento da frase é 3.
Substrings
Você pode extrair substrings utilizando índices. As strings em Swift usam codificação UTF-16, então a manipulação de índices é um pouco diferente.
Obtendo uma Substring
let palavra = "Swift"
let indice = palavra.index(palavra.startIndex, offsetBy: 2)
let substring = palavra[..<indice]
print(substring) // Sw
Substituindo Substrings
Você também pode substituir partes de strings:
var stringMutavel = "Olá, Mundo!"
stringMutavel.replaceSubrange(stringMutavel.range(of: "Mundo")!, with: "Swift")
print(stringMutavel) // Olá, Swift!
Expressões Regulares
Expressões regulares fornecem uma maneira de buscar, corresponder e manipular strings com base em padrões.
Importando o Framework Foundation
Para usar expressões regulares em Swift, importe o framework Foundation:
import Foundation
Criando uma Expressão Regular
Você pode criar uma expressão regular usando a classe NSRegularExpression
:
let padrao = "\\d+" // padrão para corresponder um ou mais dígitos
let regex = try! NSRegularExpression(pattern: padrao, options: [])
Encontrando Correspondências
Para encontrar correspondências dentro de uma string:
let texto = "Há 3 gatos e 4 cães."
let correspondencias = regex.matches(in: texto, options: [], range: NSRange(location: 0, length: texto.count))
for correspondencia in correspondencias {
let intervalo = correspondencia.range
let stringCorrespondencia = (texto as NSString).substring(with: intervalo)
print("Encontrada correspondência: \(stringCorrespondencia)") // Encontrada correspondência: 3, Encontrada correspondência: 4
}
Substituindo Correspondências
Você também pode realizar substituições usando expressões regulares:
let textoModificado = regex.stringByReplacingMatches(in: texto, options: [], range: NSRange(location: 0, length: texto.count), withTemplate: "X")
print(textoModificado) // Há X gatos e X cães.
Exemplo: Validação de Email
Vamos juntar essas informações em um exemplo que valida endereços de email usando expressões regulares.
Função de Validação de Email
func isValidEmail(email: String) -> Bool {
let padraoEmail = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let regex = try! NSRegularExpression(pattern: padraoEmail)
let correspondencias = regex.matches(in: email, options: [], range: NSRange(location: 0, length: email.count))
return correspondencias.count > 0
}
// Testando a função
let email1 = "exemplo@exemplo.com"
let email2 = "email-invalido.com"
print("\(email1) é válido: \(isValidEmail(email: email1))") // exemplo@exemplo.com é válido: true
print("\(email2) é válido: \(isValidEmail(email: email2))") // email-invalido.com é válido: false
Conclusão
Nesta aula, abordamos os fundamentos da manipulação de strings em Swift, incluindo criação, concatenação, extração de substrings e modificação. Também exploramos expressões regulares—como defini-las, encontrar correspondências, substituir texto e validar formatos como endereços de email. Dominar essas ferramentas pode melhorar significativamente sua capacidade de lidar e manipular dados textuais de forma eficaz em suas aplicações Swift.