【发布时间】:2016-01-05 07:11:37
【问题描述】:
所以我有字符串“Hello World!”并想替换“!”和 ”?”这样新的字符串就是“Hello World?”
在 Ruby 中,我们可以使用 gsub 方法轻松地做到这一点:
"Hello World!".gsub("!", "?")
如何在 Rust 中惯用地做到这一点?
【问题讨论】:
所以我有字符串“Hello World!”并想替换“!”和 ”?”这样新的字符串就是“Hello World?”
在 Ruby 中,我们可以使用 gsub 方法轻松地做到这一点:
"Hello World!".gsub("!", "?")
如何在 Rust 中惯用地做到这一点?
【问题讨论】:
您可以用str::replace 替换一个字符串中所有出现的字符串:
let result = str::replace("Hello World!", "!", "?");
// Equivalently:
result = "Hello World!".replace("!", "?");
println!("{}", result); // => "Hello World?"
对于更复杂的情况,可以使用regex::Regex::replace_all from 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!"
【讨论】:
replace 作为&str 上的方法调用,如下所示:let result = "Hello World!".replace("!", "?");。
您也可以使用迭代器和match 表达式:
let s:String = "Hello, world!".chars()
.map(|x| match x {
'!' => '?',
'A'..='Z' => 'X',
'a'..='z' => 'x',
_ => x
}).collect();
println!("{}", s);// Xxxxx, xxxxx?
【讨论】: