Ce face str::find
find returnează Some(poziție) pentru prima apariție a modelului sau None dacă nu există. rfind returnează poziția ultimei apariții. Poziția este în octeți și este mereu o graniță validă, deci o poți folosi direct pentru tăiere: &s[..poz].
Modelul poate fi un text, un char, o listă de caractere sau o funcție: s.find(char::is_numeric) găsește prima cifră. Ca să afli poziția în litere, numără caracterele dinainte: s[..poz].chars().count().
Parametri
| Parametru | Descriere |
|---|---|
pat |
Ce se caută. |
Ce returnează
Option<usize>: poziția în octeți a începutului potrivirii.
Exemple
Exemplul 1: Poziții în octeți și în litere
fn main() {
let s = "Mâine plecăm la mare";
let poz = s.find("plecăm").unwrap();
println!("octet: {poz}, literă: {}", s[..poz].chars().count());
println!("primul 'a': {:?}, ultimul 'a': {:?}", s.find('a'), s.rfind('a'));
println!("caută 'munte': {:?}", s.find("munte"));
}
Rezultat
octet: 7, literă: 6
primul 'a': Some(16), ultimul 'a': Some(19)
caută 'munte': None
Exemplul 2: Extragerea numelui fișierului dintr-o cale
fn main() {
let cale = "/home/ana/poze/vacanta.jpg";
let start = cale.rfind('/').map(|p| p + 1).unwrap_or(0);
let nume = &cale[start..];
let fara_ext = match nume.rfind('.') {
Some(p) => &nume[..p],
None => nume,
};
println!("{nume} / {fara_ext}");
println!("prima cifră din 'Sala B12': {:?}", "Sala B12".find(char::is_numeric));
}
Rezultat
vacanta.jpg / vacanta
prima cifră din 'Sala B12': Some(6)
Greșeli frecvente
- Folosești poziția ca număr de litere (de exemplu pentru
chars().nth(poz)). Este în octeți. - Scrii
s.find("x").unwrap()fără să fii sigur că textul există: panică laNone.
Comenzi înrudite
str::contains: Verifică dacă textul conține undeva un text, un caracter sau un caracter care respectă o condiție.str::split_once: Taie textul în două la prima apariție a separatorului și returnează perechea, sau None dacă separatorul lipsește.str::matches: Iterator cu toate bucățile din text care se potrivesc cu modelul (fără suprapuneri); util pentru numărare.str::char_indices: Parcurge caracterele împreună cu poziția lor în octeți: perechi (usize, char).