所以我有字符串" Hello World!"并想要取代"!"用"?"所以新的字符串是" Hello World?"
在Ruby中,我们可以使用gsub
方法轻松完成此任务:
"Hello World!".gsub("!", "?")
如何在Rust中以惯用方式执行此操作?
答案 0 :(得分:23)
您可以使用std::str::replace
替换另一个字符串中出现的所有字符串:
let result = str::replace("Hello World!", "!", "?");
// Equivalently
result = "Hello World!".replace("!", "?");
println!("{}", result); // => "Hello World?"
对于更复杂的案例,您可以使用regex::Regex::replace_all
中的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!"
答案 1 :(得分:15)
您也可以使用迭代器和match
表达式:
let s:String = "Hello, world!".chars()
.map(|x| match x {
'!' => '?',
'A'...'Z' => 'X',
'a'...'z' => 'x',
_ => x}
).collect();
println!("{}", s);// Xxxxx, xxxxx?