2016-01-05 9 views

risposta

9

Si possono sostituire tutte le occorrenze di una stringa all'interno di un'altra con std::str::replace:

let result = str::replace("Hello World!", "!", "?"); 
println!("{}", result); // => "Hello World!" 

Per i casi più complessi, è possibile utilizzare regex::Regex::replace_all da regex:

use regex::Regex; 
let re = Regex::new(r"[A-Za-z]").unwrap(); 
let result = re.replace_all("Hello World!", "x"); 
println!("{}", result); // => "xxxxx xxxxx!" 
+5

Nota che puoi anche chiamare 'replace' come metodo su un' & str', come questo: 'let result =" Hello World! ". Replace ("! ","? ");'. – Dogbert

+1

nota: è un anti-pattern per compilare la stessa espressione regolare in un ciclo poiché la compilazione è in genere costosa. Vedi i dettagli nella descrizione della cassa. –

7

Inoltre è possibile utilizzare iteratori e match espressione:

let s:String = "Hello, world!".chars() 
    .map(|x| match x { 
     '!' => '?', 
     'A'...'Z' => 'X', 
     'a'...'z' => 'x', 
     _ => x} 
    ).collect(); 
println!("{}", s);// Xxxxx, xxxxx? 
Problemi correlati