rust 删除字符串中的所有空格

pu82cl6c  于 2022-12-29  发布在  其他
关注(0)|答案(5)|浏览(201)

如何删除字符串中的所有白色?我可以想到一些显而易见的方法,比如循环遍历字符串并删除每个空格字符,或者使用正则表达式,但这些解决方案都不是那么有表达力或有效。什么是简单而有效的方法来删除字符串中的所有空格?

xsuvu9jc

xsuvu9jc1#

如果你想修改String,使用retain,这可能是最快的方法。

fn remove_whitespace(s: &mut String) {
    s.retain(|c| !c.is_whitespace());
}

如果你仍然需要它或者只有一个&str而不能修改它,那么你可以使用filter创建一个新的String,当然,这需要分配来创建String

fn remove_whitespace(s: &str) -> String {
    s.chars().filter(|c| !c.is_whitespace()).collect()
}
niwlg2el

niwlg2el2#

一个好的选择是使用split_whitespace,然后收集到一个字符串:

fn remove_whitespace(s: &str) -> String {
    s.split_whitespace().collect()
}
k4ymrczo

k4ymrczo3#

实际上我找到了一个更短的方法

fn no_space(x : String) -> String{
  x.replace(" ", "")
}
tsm1rwdh

tsm1rwdh4#

如果使用nightly,则可以使用remove_matches()

#![feature(string_remove_matches)]

fn remove_whitespace(s: &mut String) {
    s.remove_matches(char::is_whitespace);
}

有点令人惊讶的是,在我做的(非常不精确的)小基准测试中,发现它一直比retain()快。

tpgth1q7

tpgth1q75#

您可以使用trim()删除空白-空格、制表符和换行符。

fn remove_space(data: &str) {
    for word in data.split(",") {
        println!("{:?}", word.trim());
    }
}

下面是playground上的完整示例

相关问题