小编Ger*_*ero的帖子

拆分字符串并跳过空子字符串

我正在学习 Rust 并发现了这个问题:

我想按模式拆分字符串并删除结果子字符串为空的所有情况。

下面是一个例子:

let s = "s,o,m,e,";
for elem in s.split(",").skip_while(|&x| x.is_empty()) {
    print!(" <{}> ", elem);
    //print!(" <{}>({}) ", elem, elem.is_empty());
}
Run Code Online (Sandbox Code Playgroud)

但结果如下:

 <s>  <o>  <m>  <e>  <> 
Run Code Online (Sandbox Code Playgroud)

我的想法是:Splitsplit实现返回的结构Iterator提供skip_while. IntelliSense 告诉我xin 闭包是 type ,&&str所以我假设迭代器( type &str)的所有元素都是空的被省略。

但它不会跳过空子字符串。

我还尝试打印is_empty函数的结果。它表明最后一个切片确实是空的。如果我改为使用 skip_while skip_while(|&x| x == "s"),它会正确地省略"s"(在is_empty此处打印):

 <o>(false)  <m>(false)  <e>(false)  <>(true)
Run Code Online (Sandbox Code Playgroud)

那么切片在迭代器中的行为不同吗?

为什么会这样或者我在哪里弄错了?

string iterator rust

4
推荐指数
1
解决办法
861
查看次数

标签 统计

iterator ×1

rust ×1

string ×1