如何删除字符串中的所有空格?我可以想到一些显而易见的方法,比如遍历字符串并删除每个空格字符,或者使用正则表达式,但这些解决方案并不那么有表现力或效率。如何简单有效地删除字符串中的所有空格?
pes8fvy91#
如果要修改String,请使用retain。这可能是可用的最快方法。
String
retain
fn remove_whitespace(s: &mut String) { s.retain(|c| !c.is_whitespace()); }
如果你不能修改它,因为你仍然需要它或只有一个&str,那么你可以使用过滤器和创建一个新的String。这将,当然,必须分配,使String。
&str
fn remove_whitespace(s: &str) -> String { s.chars().filter(|c| !c.is_whitespace()).collect() }
bksxznpy2#
一个好的选择是使用split_whitespace,然后收集到一个字符串:
split_whitespace
fn remove_whitespace(s: &str) -> String { s.split_whitespace().collect() }
n3ipq98p3#
事实上我找到了一个更短的方法
fn no_space(x : String) -> String{ x.replace(" ", "") }
1hdlvixo4#
如果您使用nightly,则可以使用remove_matches():
remove_matches()
#![feature(string_remove_matches)] fn remove_whitespace(s: &mut String) { s.remove_matches(char::is_whitespace); }
有些令人惊讶的是,在我做的(非常不精确的)小基准测试中,它一直比retain()快。
retain()
t2a7ltrp5#
您可以使用trim()来移除空白字符-空格、定位点和换行字符。
trim()
fn remove_space(data: &str) { for word in data.split(",") { println!("{:?}", word.trim()); } }
下面是playground上的完整示例
5条答案
按热度按时间pes8fvy91#
如果要修改
String
,请使用retain
。这可能是可用的最快方法。如果你不能修改它,因为你仍然需要它或只有一个
&str
,那么你可以使用过滤器和创建一个新的String
。这将,当然,必须分配,使String
。bksxznpy2#
一个好的选择是使用
split_whitespace
,然后收集到一个字符串:n3ipq98p3#
事实上我找到了一个更短的方法
1hdlvixo4#
如果您使用nightly,则可以使用
remove_matches()
:有些令人惊讶的是,在我做的(非常不精确的)小基准测试中,它一直比
retain()
快。t2a7ltrp5#
您可以使用
trim()
来移除空白字符-空格、定位点和换行字符。下面是playground上的完整示例