str::splitn în Rust

Împarte textul în cel mult n bucăți; ultima bucată conține tot restul textului, cu separatori cu tot.

Sintaxă
pub fn splitn<P: Pattern>(&self, n: usize, pat: P) -> SplitN<'_, P>

Ce face str::splitn

splitn(n, sep) se oprește după n - 1 tăieri. Ultima bucată primește restul textului neîmpărțit. Este utilă pentru linii de forma cheie=valoare în care valoarea poate conține și ea separatorul.

Când ai nevoie de exact două părți, split_once este mai comodă, pentru că returnează direct o pereche. Există și rsplitn, care numără tăierile de la final.

Parametri

Parametru Descriere
n Numărul maxim de bucăți. Cu n = 1 obții tot textul ca o singură bucată; cu n = 0, nimic.
pat Separatorul, ca la split.

Ce returnează

Un iterator cu cel mult n bucăți &str.

Exemple

Exemplul 1: Cel mult trei bucăți

fn main() {
    let linie = "2026-10-19 ERROR conexiune refuzată: port 5432";
    let parti: Vec<&str> = linie.splitn(3, ' ').collect();
    println!("data:   {}", parti[0]);
    println!("nivel:  {}", parti[1]);
    println!("mesaj:  {}", parti[2]);
}

Rezultat

data:   2026-10-19
nivel:  ERROR
mesaj:  conexiune refuzată: port 5432

Exemplul 2: Cheie și valoare care conține ‘=’

fn main() {
    let setare = "url=https://exemplu.ro/?a=1&b=2";
    let mut parti = setare.splitn(2, '=');
    let cheie = parti.next().unwrap();
    let valoare = parti.next().unwrap_or("");
    println!("{cheie} -> {valoare}");
}

Rezultat

url -> https://exemplu.ro/?a=1&b=2

Greșeli frecvente

  • Crezi că n este numărul de tăieri. Este numărul de bucăți: splitn(2, ...) taie o singură dată.

Comenzi înrudite

  • str::split: Împarte textul în bucăți la fiecare apariție a unui separator; rsplit dă bucățile de la coadă spre început.
  • str::split_once: Taie textul în două la prima apariție a separatorului și returnează perechea, sau None dacă separatorul lipsește.