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

stszievb  于 2022-11-24  发布在  其他
关注(0)|答案(5)|浏览(293)

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

pes8fvy9

pes8fvy91#

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

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

如果你不能修改它,因为你仍然需要它或只有一个&str,那么你可以使用过滤器和创建一个新的String。这将,当然,必须分配,使String

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

bksxznpy2#

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

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

n3ipq98p3#

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

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

1hdlvixo4#

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

#![feature(string_remove_matches)]

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

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

t2a7ltrp

t2a7ltrp5#

您可以使用trim()来移除空白字符-空格、定位点和换行字符。

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

下面是playground上的完整示例

相关问题