Guia completo para verificar substring em Swift com exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Como verificar se uma string contém substring em Swift? Guia completo

\n\n

Olá, colega desenvolvedor! Se você já programou em Swift e se perguntou: "Como faço para encontrar uma palavra dentro de outra?", você está no lugar certo. Este é um dos tópicos mais populares no Stack Overflow (a versão em inglês já acumulou centenas de milhares de visualizações). E não é por acaso: trabalhar com strings é fundamental para qualquer aplicativo.

\n\n

Neste artigo, vamos explorar todas as formas legítimas de verificar se uma string contém uma substring. Desde o simples contains() até técnicas avançadas com busca case-insensitive e expressões regulares. Vamos nessa!

\n\n

1. A maneira mais simples: o método contains()

\n\n

Desde o Swift 1.0, temos o método nativo contains() no tipo String. Ele funciona de forma intuitiva e é muito rápido.

\n\n
let fullString = "Olá, mundo Swift!"\nlet searchString = "Swift"\n\nif fullString.contains(searchString) {\n    print("Sim, a string contém '\\(searchString)'")\n} else {\n    print("Não, não contém")\n}\n// Saída: Sim, a string contém 'Swift'
\n\n

Importante: o método contains() diferencia maiúsculas de minúsculas. Ou seja, "swift" não será encontrado na string "Swift". Mas vamos corrigir isso mais adiante.

\n\n

2. Busca case-insensitive: localizedCaseInsensitiveContains()

\n\n

Muitas vezes, precisamos encontrar uma palavra ignorando letras maiúsculas e minúsculas. Para isso, existe um método especial que considera a localidade do usuário.

\n\n
let text = "Bem-vindo ao Swift"\nlet search = "swift"\n\nif text.localizedCaseInsensitiveContains(search) {\n    print("Encontrado! Maiúsculas/minúsculas não são problema.")\n} else {\n    print("Não encontrado")\n}\n// Saída: Encontrado! Maiúsculas/minúsculas não são problema.
\n\n

Este método usa a localidade atual do dispositivo, o que é especialmente importante para idiomas com regras de comparação especiais (como o turco, onde "i" e "I" são letras diferentes).

\n\n

3. Busca com localidade: localizedStandardContains()

\n\n

Outro método útil é o localizedStandardContains(). Ele realiza a busca da mesma forma que a pesquisa padrão do iOS (como no Spotlight ou Finder).

\n\n
let fileName = "Fotos_ferias_2024.jpg"\nlet query = "ferias"\n\nif fileName.localizedStandardContains(query) {\n    print("Arquivo encontrado!")\n}\n// Saída: Arquivo encontrado!
\n\n

Este método normaliza automaticamente as strings, remove sinais diacríticos (por exemplo, "é" = "e") e ignora maiúsculas/minúsculas. Ideal para campos de busca em interfaces.

\n\n

4. O método clássico: range(of:)

\n\n

Às vezes, não basta saber se a substring existe; precisamos também da sua posição. É aí que entra o range(of:). Ele retorna um intervalo opcional (Range<String.Index>?).

\n\n
let phrase = "Estudando Swift no pythonlib.ru"\nlet word = "Swift"\n\nif let range = phrase.range(of: word) {\n    print("Substring encontrada na posição: \\(range.lowerBound)")\n    // Podemos até extrair um trecho da string\n    let extracted = phrase[range]\n    print("Extraído: \\(extracted)")\n} else {\n    print("Substring não encontrada")\n}
\n\n

Para busca case-insensitive com range, use a opção .caseInsensitive:

\n\n
if let range = phrase.range(of: "swift", options: .caseInsensitive) {\n    print("Encontrado sem diferenciar maiúsculas: \\(phrase[range])")\n}
\n\n

5. Verificando início e fim da string

\n\n

Às vezes, precisamos verificar não "se contém", mas "se começa com..." ou "se termina com...". Para isso, existem métodos específicos:

\n\n
let url = "https://pythonlib.ru"\n\nif url.hasPrefix("https://") {\n    print("Esta é uma URL segura")\n}\n\nif url.hasSuffix(".ru") {\n    print("Domínio russo")\n}
\n\n

Ambos os métodos também diferenciam maiúsculas de minúsculas.

Blogs

Book Recommendations