2016-01-05 12 views

Odpowiedz

9

Można zastąpić wszystkie wystąpienia jednego ciągu znaków w innym z std::str::replace:

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

Dla bardziej złożonych przypadkach można użyć regex::Regex::replace_all z 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

Zauważ, że możesz również wywołać 'replace' jako metodę na' i str', tak jak to: 'let result =" Hello World! ". Replace ("! ","? ");'. – Dogbert

+1

uwaga: Jest to wzór zapobiegający kompilacji tego samego wyrażenia regularnego w pętli, ponieważ kompilacja jest zazwyczaj droga. Zobacz szczegóły w opisie skrzynki. –

7

Również można użyć iteratorów i match wyrażenie:

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