UTF-8 og chars
Håndtering af Unicode
UTF-8 og chars er en gratis Lær at programmere i Rust-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær at programmere i Rust, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær at programmere i Rust-kurset indeholder 4 lektioner i alt.
Rust-strenge er UTF-8
Alle Rust-String- og &str-værdier er kodet som UTF-8. Det betyder, at tekst kan indeholde alle Unicode-tegn, ikke kun ASCII.
fn main() {
let s = String::from("caf\u{e9}");
println!("{}", s);
}Hvad er UTF-8?
UTF-8 koder hvert Unicode-tegn med én til fire bytes. ASCII-tegn bruger én byte; bogstaver med accenter og emoji bruger flere.
fn main() {
let ascii = "A"; // 1 byte
let accent = "\u{e9}"; // 2 bytes (e-acute)
println!("{} bytes vs {} bytes", ascii.len(), accent.len());
}Bytes sammenlignet med tegn
På grund af kodning med flere bytes returnerer len() bytes, mens antallet af tegn kan være mindre.
fn main() {
let s = "caf\u{e9}";
println!("bytes {}", s.len());
println!("chars {}", s.chars().count());
}Typen char er Unicode
En Rust-char er en værdi på 4 bytes, der kan indeholde enhver Unicode-skalærværdi, langt mere end en enkelt byte.
fn main() {
let letter = 'Z';
let accented = '\u{f1}'; // n with tilde
println!("{} {}", letter, accented);
}Iteration over tegn
Brug chars() til at gennemgå tekst tegn for tegn. Det håndterer tegn med flere bytes korrekt.
fn main() {
let s = "a\u{e9}z";
for c in s.chars() {
println!("{}", c);
}
}Hvorfor du ikke kan indeksere med et tal
Rust tillader ikke s[0] på en streng. Fordi tegn kan have forskellig byte-størrelse, ville indeksering med et enkelt tal være tvetydig og usikker.
fn main() {
let s = "hello";
// let c = s[0]; // error: cannot index a str
let first = s.chars().next().unwrap();
println!("{}", first);
}Hentning af det n-te tegn
Brug iterator-metoden nth til at hente et tegn på en bestemt position. Den returnerer en Option.
fn main() {
let s = "abcdef";
let third = s.chars().nth(2);
println!("{:?}", third);
}Iteration over bytes
Når du virkelig har brug for rå bytes, skal du bruge bytes(), som giver u8-værdier.
fn main() {
let s = "AB";
for b in s.bytes() {
println!("{}", b);
}
}Slicing ved bytegrænser
Streng-slices bruger byteindeks. En slice skal begynde og slutte ved en gyldig tegngrænse, ellers går programmet i panik.
fn main() {
let s = "hello";
let part = &s[0..3]; // valid ASCII boundary
println!("{}", part);
}char-metoder
Typen char har praktiske metoder som is_alphabetic, is_numeric og to_uppercase.
fn main() {
let c = 'k';
println!("alpha {} numeric {}", c.is_alphabetic(), c.is_numeric());
println!("upper {}", c.to_uppercase());
}Optælling af bestemte tegn
Kombinér chars med filter for at tælle tegn, der matcher en betingelse.
fn main() {
let s = "banana";
let a_count = s.chars().filter(|&c| c == 'a').count();
println!("a appears {} times", a_count);
}Hurtigt tjek
Husk, hvorfor en strengs længde kan overraske dig.
Opsummering
UTF-8 og chars i Rust:
- Strenge er UTF-8; tegn bruger 1 til 4 bytes.
len()giver antallet af bytes;chars().count()giver antallet af tegn.- Du kan ikke indeksere en streng med et tal; brug
chars()ellernth. - Slices skal falde på tegngrænser.
fn main() {
let s = "sm\u{ee}le";
println!("bytes {} chars {}", s.len(), s.chars().count());
for c in s.chars() {
print!("{} ", c);
}
println!();
}Lær Rust med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 144
Ofte stillede spørgsmål
Er lektionen “UTF-8 og chars” gratis?
Ja — alle 3 lektioner i læringssporet Lær at programmere i Rust, inklusive “UTF-8 og chars”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær at programmere i Rust-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “UTF-8 og chars”?
Håndtering af Unicode Du øver dig i Lær at programmere i Rust med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lær at programmere i Rust?
Der kræves ingen tidligere erfaring. Lær at programmere i Rust på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “UTF-8 og chars”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lær at programmere i Rust-lektion?
Ja. Alle Lær at programmere i Rust-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- String kontra &str
- Slices
- String-metoder
- UTF-8 og chars