String::remove în Rust

String Rust 1.0

Scoate caracterul de la poziția idx (în octeți) și îl returnează; restul textului se mută la stânga.

Sintaxă
pub fn remove(&mut self, idx: usize) -> char

Ce face String::remove

remove șterge un singur caracter, cel care începe la octetul idx, și ți-l dă înapoi. Dacă idx este în afara textului sau nu este începutul unui caracter, programul se oprește cu panică.

Pentru mai multe caractere deodată folosește drain sau replace_range; pentru a șterge toate caracterele de un anumit fel, retain sau replace.

Parametri

Parametru Descriere
idx Poziția în octeți a caracterului de șters (granița unui caracter, < len()).

Ce returnează

Caracterul șters (char).

Exemple

Exemplul 1: Ștergerea primului caracter

fn main() {
    let mut cod = String::from("#RO123");
    let primul = cod.remove(0);
    println!("am scos '{primul}', rămâne {cod}");

    let mut s = String::from("ăla");
    let litera = s.remove(0);    // ă are 2 octeți, se scoate întreg
    println!("am scos '{litera}', rămâne {s}");
}

Rezultat

am scos '#', rămâne RO123
am scos 'ă', rămâne la

Exemplul 2: Ștergerea unui caracter găsit

fn main() {
    let mut nume = String::from("Ioan_a");
    if let Some(poz) = nume.find('_') {
        nume.remove(poz);
    }
    println!("{nume}");
}

Rezultat

Ioana

Greșeli frecvente

  • Apelezi remove într-o buclă pentru multe caractere: fiecare apel mută tot restul textului. Pentru ștergeri multiple retain este mult mai rapid.
  • Dai o poziție în litere pe un text cu diacritice și primești panică byte index ... is not a char boundary.

Comenzi înrudite

  • String::pop: Scoate ultimul caracter din String și îl returnează ca Option<char> (None dacă textul e gol).
  • String::insert: Inserează un caracter (insert) sau un text (insert_str) la o poziție dată în octeți.
  • String::retain: Păstrează doar caracterele pentru care funcția dată returnează true; restul sunt șterse pe loc.
  • String::drain: Scoate din String bucata dintr-un interval de octeți și o returnează ca iterator de caractere.