Ce face str::matches
matches(pat) dă, în ordine, fiecare apariție a modelului ca &str. Aparițiile nu se suprapun: în "aaa", modelul "aa" apare o singură dată. Cel mai des se folosește cu count(), pentru a afla de câte ori apare ceva.
Cu o funcție ca model, matches dă caracterele potrivite, ca bucăți de text. Dacă ai nevoie și de pozițiile aparițiilor, folosește match_indices.
Parametri
| Parametru | Descriere |
|---|---|
pat |
Textul, caracterul sau funcția căutată. |
Ce returnează
Un iterator de &str.
Exemple
Exemplul 1: De câte ori apare un cuvânt
fn main() {
let text = "ana are mere, ana are pere, Ana are prune";
println!("'ana': {}", text.matches("ana").count());
println!("'are': {}", text.matches("are").count());
println!("'aa' în 'aaa': {}", "aaa".matches("aa").count());
println!("{:?}", text.match_indices("are").map(|(i, _)| i).collect::<Vec<_>>());
}
Rezultat
'ana': 2
'are': 3
'aa' în 'aaa': 1
[4, 18, 32]
Exemplul 2: Cifrele dintr-un text
fn main() {
let s = "Tel: 0742-12-34";
let cifre: Vec<&str> = s.matches(char::is_numeric).collect();
println!("{cifre:?}");
println!("{}", cifre.concat());
}
Rezultat
["0", "7", "4", "2", "1", "2", "3", "4"]
07421234
Greșeli frecvente
- Te aștepți la potriviri suprapuse.
matchescontinuă căutarea după finalul potrivirii anterioare.
Comenzi înrudite
str::find: Caută prima (find) sau ultima (rfind) apariție și returnează poziția ei în octeți, sau None.str::contains: Verifică dacă textul conține undeva un text, un caracter sau un caracter care respectă o condiție.str::split: Împarte textul în bucăți la fiecare apariție a unui separator; rsplit dă bucățile de la coadă spre început.