当前位置:  开发笔记 > 后端 > 正文

如何在Rust中以惯用方式替换特定字符?

如何解决《如何在Rust中以惯用方式替换特定字符?》经验,为你挑选了2个好方法。

所以我有字符串"Hello World!" 并想要取代"!" 用"?" 所以新的字符串是"Hello World?"

在Ruby中,我们可以使用以下gsub方法轻松完成此操作:

"Hello World!".gsub("!", "?")

如何在Rust中以惯用方式执行此操作?



1> fny..:

您可以用以下内容替换另一个字符串中出现的所有字符串std::str::replace:

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

对于更复杂的情况下,可以使用regex::Regex::replace_all从正则表达式:

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("!","?");`.
请注意:在循环中编译相同的正则表达式是一种反模式,因为编译通常很昂贵.请参阅板条箱说明中的详细信息.

2> aSpex..:

您还可以使用迭代器和match表达式:

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

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有