Jämföra och söka bland byte
Använd hjälpfunktioner från std.mem på strängar
Jämföra och söka bland byte är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.
Du kan inte använda ==
Två slicer är olika fönster, så == jämför pekare och längder, inte innehåll. För att jämföra text behövs en riktig kontroll byte för byte.
std.mem till undsättning
Standardbiblioteksmodulen std.mem fungerar med slicer av alla elementtyper, inklusive dina []const u8-strängar.
const std = @import("std");
const mem = std.mem;eql jämför innehåll
Använd mem.eql för att testa om två slicer innehåller samma byte i samma ordning. Den returnerar en vanlig bool som du kan använda i en villkorsgren.
mem.eql(u8, "zig", "zig"); // trueAnge elementtypen
Många hjälpfunktioner i std.mem tar elementtypen som sitt första argument. För strängar är argumentet alltid u8, vilket stämmer med []const u8.
Hitta en delsträng
Sök efter text i text med indexOf. Den returnerar ett valfritt index: positionen för den första träffen eller null om den saknas.
mem.indexOf(u8, "hello", "ll"); // 2Hantera null
Eftersom indexOf returnerar ett optional packar du upp det med if eller orelse. Resultatet null betyder helt enkelt att söktexten inte hittades.
if (mem.indexOf(u8, h, n)) |i| {
// found at i
}Sök från slutet
Behöver du den sista förekomsten i stället för den första? Använd lastIndexOf, som söker bakåt och också returnerar ett valfritt index.
Prefix och suffix
Kontrollera hur en sträng börjar eller slutar med startsWith och endsWith. Båda tar u8 och returnerar en tydlig bool, vilket passar perfekt vid tolkning.
mem.startsWith(u8, "main.zig", "main");Sök efter en enda byte
Om du vill hitta en byte i stället för en delsträng använder du indexOfScalar. Det är den snabba vägen när du bara behöver ett enda tecken.
mem.indexOfScalar(u8, "a,b", ',');Räkna förekomster
Använd mem.count för att räkna hur många gånger en söktext förekommer i texten. Den returnerar en usize, aldrig null, även när antalet är noll.
mem.count(u8, "aaa", "a"); // 3Skiftlägeskänslighet
Dessa hjälpfunktioner är skiftlägeskänsliga: A och a är olika byte. Normalisera skiftläget först om du vill ha en skiftlägesokänslig matchning.
Snabb kontroll
Du vill veta om två strängar innehåller exakt samma text.
Sammanfattning
Du jämförde text med mem.eql och sökte i den med indexOf, startsWith, indexOfScalar och count, med hänsyn till null och skiftläge. 🔍
Lär dig Zig med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Jämföra och söka bland byte” gratis?
Ja – hela texten till ”Jämföra och söka bland byte” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Jämföra och söka bland byte”?
Använd hjälpfunktioner från std.mem på strängar Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Zig Academy?
Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Jämföra och söka bland byte”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Zig Academy-lektionen?
Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Strängar är []const u8
- Strängliteraler och escape-sekvenser
- Jämföra och söka bland byte
- Formatera text med std.fmt