Ce face str::split
split(sep) returnează un iterator cu bucățile dintre separatori, ca &str (fără copiere). Separatorul poate fi un char (','), un text (", "), o listă de caractere ([',', ';']) sau o funcție (char::is_numeric, |c| c == '-').
Bucățile goale sunt păstrate: "a,,b".split(',') dă "a", "", "b", iar un text gol dă o bucată goală. Pentru cuvinte separate de spații multiple folosește split_whitespace. Ca să ai bucățile într-un vector: .collect::<Vec<&str>>().
rsplit caută de la final și dă bucățile în ordine inversă. Este utilă când te interesează ultima parte, de exemplu extensia unui fișier: nume.rsplit('.').next().
Parametri
| Parametru | Descriere |
|---|---|
pat |
Separatorul (un „pattern”): char, &str, [char; N], &[char] sau closure |c: char| -> bool. |
Ce returnează
Un iterator de &str.
Exemple
Exemplul 1: Separatori diferiți
fn main() {
let a: Vec<&str> = "Iași,Cluj,,Brașov".split(',').collect();
let b: Vec<&str> = "unu, doi, trei".split(", ").collect();
let c: Vec<&str> = "2026-10-19 08:15".split(['-', ' ', ':']).collect();
let d: Vec<&str> = "abc1def22gh".split(char::is_numeric).collect();
println!("{a:?}\n{b:?}\n{c:?}\n{d:?}");
}
Rezultat
["Iași", "Cluj", "", "Brașov"]
["unu", "doi", "trei"]
["2026", "10", "19", "08", "15"]
["abc", "def", "", "gh"]
Exemplul 2: rsplit pentru ultima parte
fn main() {
let cale = "documente/2026/raport.final.pdf";
let fisier = cale.rsplit('/').next().unwrap();
let extensie = fisier.rsplit('.').next().unwrap();
println!("fișier: {fisier}, extensie: {extensie}");
let invers: Vec<&str> = "a.b.c".rsplit('.').collect();
println!("{invers:?}");
}
Rezultat
fișier: raport.final.pdf, extensie: pdf
["c", "b", "a"]
Exemplul 3: Sumă din numere separate prin punct și virgulă
fn main() {
let preturi = "12.50;7;3.25;";
let total: f64 = preturi
.split(';')
.filter(|p| !p.is_empty())
.map(|p| p.parse::<f64>().unwrap())
.sum();
println!("total: {total:.2} lei");
}
Rezultat
total: 22.75 lei
Greșeli frecvente
- Nu te aștepți la bucăți goale.
"a;b;".split(';')dă trei bucăți, ultima"". Filtrează-le sau foloseștesplit_terminator. - Încerci
split(' ')pe text cu spații duble sau tab-uri: apar bucăți goale.split_whitespace()rezolvă. - Scrii
split(",")șisplit(',')crezând că diferă: ambele merg, dar varianta cuchareste puțin mai rapidă.
Comenzi înrudite
str::splitn: Împarte textul în cel mult n bucăți; ultima bucată conține tot restul textului, cu separatori cu tot.str::split_once: Taie textul în două la prima apariție a separatorului și returnează perechea, sau None dacă separatorul lipsește.str::split_whitespace: Împarte textul în cuvinte, la orice spațiu alb (spații, tab, linie nouă), fără bucăți goale.str::lines: Împarte textul pe linii (după \n sau \r\n), fără caracterele de sfârșit de linie.str::matches: Iterator cu toate bucățile din text care se potrivesc cu modelul (fără suprapuneri); util pentru numărare.