Comparando e pesquisando bytes
Use os auxiliares de std.mem em strings.
Comparando e pesquisando bytes é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Você não pode usar ==
Duas fatias são janelas diferentes, portanto == compara ponteiros e comprimentos, não conteúdos. Comparar texto exige uma verificação real byte a byte.
std.mem ao resgate
O módulo da biblioteca padrão std.mem funciona com fatias de qualquer tipo de elemento, inclusive suas strings []const u8.
const std = @import("std");
const mem = std.mem;eql compara conteúdos
Use mem.eql para testar se duas fatias contêm os mesmos bytes na mesma ordem. Ele retorna um bool simples que você pode usar em uma ramificação.
mem.eql(u8, "zig", "zig"); // truePasse o tipo do elemento
Muitos auxiliares de std.mem recebem o tipo do elemento como primeiro argumento. Para strings, esse argumento é sempre u8, correspondendo a []const u8.
Encontre uma substring
Pesquise texto dentro de texto com indexOf. Ele retorna um índice opcional: a posição da primeira ocorrência ou null se ela não existir.
mem.indexOf(u8, "hello", "ll"); // 2Trate o null
Como indexOf retorna um valor opcional, desembrulhe-o com if ou orelse. Um resultado null simplesmente significa que o texto procurado não foi encontrado.
if (mem.indexOf(u8, h, n)) |i| {
// found at i
}Pesquise a partir do fim
Precisa da última ocorrência em vez da primeira? Use lastIndexOf, que pesquisa de trás para a frente e também retorna um índice opcional.
Prefixo e sufixo
Verifique como uma string começa ou termina com startsWith e endsWith. Ambos recebem u8 e retornam um bool simples, perfeito para análise.
mem.startsWith(u8, "main.zig", "main");Pesquisa de um único byte
Para localizar um byte em vez de uma substring, use indexOfScalar. Esse é o caminho rápido quando você precisa de um único caractere.
mem.indexOfScalar(u8, "a,b", ',');Conte as ocorrências
Use mem.count para contar quantas vezes um texto procurado aparece no texto. Ele retorna um usize, nunca null, mesmo quando a contagem é zero.
mem.count(u8, "aaa", "a"); // 3Distinção entre maiúsculas e minúsculas
Esses auxiliares diferenciam maiúsculas e minúsculas: A e a são bytes diferentes. Normalize as maiúsculas e minúsculas antes se quiser uma correspondência que não faça essa distinção.
Verificação rápida
Você quer saber se duas strings contêm exatamente o mesmo texto.
Recapitulação
Você comparou texto com mem.eql e pesquisou usando indexOf, startsWith, indexOfScalar e count, todos atentos a null e à distinção entre maiúsculas e minúsculas. 🔍
Perguntas Frequentes
A aula “Comparando e pesquisando bytes” é grátis?
Sim — o texto completo de “Comparando e pesquisando bytes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Comparando e pesquisando bytes”?
Use os auxiliares de std.mem em strings. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Comparando e pesquisando bytes”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Strings são []const u8
- Literais de string e sequências de escape
- Comparando e pesquisando bytes
- Formatando texto com std.fmt