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