Ce face String::split_off
După let coada = s.split_off(at), s conține octeții [0, at), iar coada pe cei de la at la final. Poziția trebuie să fie granița unui caracter și cel mult len().
Dacă vrei doar să privești cele două părți fără să le separi în String-uri diferite, split_at (pe &str) sau split_once sunt suficiente și nu alocă memorie.
Parametri
| Parametru | Descriere |
|---|---|
at |
Poziția de tăiere, în octeți. |
Ce returnează
Un String nou cu partea de la at la final.
Exemple
Exemplul 1: Prenume și nume
fn main() {
let mut s = String::from("Mihai Eminescu");
let poz = s.find(' ').unwrap();
let nume = s.split_off(poz + 1);
s.pop(); // scoatem spațiul rămas la final
println!("prenume: {s:?}, nume: {nume:?}");
}
Rezultat
prenume: "Mihai", nume: "Eminescu"
Exemplul 2: Tăierea la final și la început
fn main() {
let mut a = String::from("Vaslui");
let gol = a.split_off(a.len());
println!("{a:?} + {gol:?}");
let mut b = String::from("Vaslui");
let tot = b.split_off(0);
println!("{b:?} + {tot:?}");
}
Rezultat
"Vaslui" + ""
"" + "Vaslui"
Greșeli frecvente
- Inversezi părțile: valoarea returnată este partea a doua, nu prima.
Comenzi înrudite
String::drain: Scoate din String bucata dintr-un interval de octeți și o returnează ca iterator de caractere.String::truncate: Scurtează textul la primii new_len octeți; nu face nimic dacă textul e deja mai scurt.str::split_once: Taie textul în două la prima apariție a separatorului și returnează perechea, sau None dacă separatorul lipsește.