Ce face str::get
s.get(a..b) face același lucru ca &s[a..b], dar dacă intervalul iese din text sau taie o literă în două, returnează None în loc să oprească programul. Acceptă toate formele de interval: ..3, 2.., 1..=4.
is_char_boundary(i) spune dacă octetul i este începutul unui caracter (sau exact finalul textului). Pozițiile 0 și len() sunt mereu granițe; o poziție mai mare decât len() dă false. Este utilă înainte de insert, truncate sau split_at cu poziții calculate.
Parametri
| Parametru | Descriere |
|---|---|
i |
Intervalul de octeți (a..b, ..b, a..). |
index |
Poziția în octeți verificată. |
Ce returnează
get: Option<&str>. is_char_boundary: bool.
Exemple
Exemplul 1: get în loc de panică
fn main() {
let s = "Iași";
println!("{:?}", s.get(0..2));
println!("{:?}", s.get(0..3)); // taie litera ș
println!("{:?}", s.get(0..4));
println!("{:?}", s.get(2..10)); // în afara textului
}
Rezultat
Some("Ia")
None
Some("Iaș")
None
Exemplul 2: Granițele caracterelor
fn main() {
let s = "ață";
for i in 0..=s.len() + 1 {
println!("octetul {i}: graniță = {}", s.is_char_boundary(i));
}
}
Rezultat
octetul 0: graniță = true
octetul 1: graniță = true
octetul 2: graniță = false
octetul 3: graniță = true
octetul 4: graniță = false
octetul 5: graniță = true
octetul 6: graniță = false
Greșeli frecvente
- Folosești
&s[a..b]cu poziții venite de la utilizator. Foloseștegetși trateazăNone.
Comenzi înrudite
str: Tipul pentru o bucată de text UTF-8 împrumutată (&str): literalii, părți din String, parametrii de funcții.str::char_indices: Parcurge caracterele împreună cu poziția lor în octeți: perechi (usize, char).String::truncate: Scurtează textul la primii new_len octeți; nu face nimic dacă textul e deja mai scurt.String::insert: Inserează un caracter (insert) sau un text (insert_str) la o poziție dată în octeți.