split(' ') 和 split_whitespace() 之间的区别

Hee*_*ang 2 rust

打印出以下代码:

1

2

我不明白这一点。为什么会发生这种情况?

fn main() {
    let s = "a ";
    let sv1:Vec<&str> = s.split_whitespace().collect();
    println!("{}", sv1.len());
    for x in sv1.iter() {
        println!("{}", x);
    }

    let sv2:Vec<&str> = s.split(' ').collect();
    println!("{}", sv2.len());
    for x in sv2.iter() {
        println!("{}", x);
    }
}
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

根据方法 docssplit_whitespace返回std::str::SplitWhitespace,它是字符串的非空白子字符串上的迭代器,由任意数量的空白分隔。这意味着它可以分割多个空格,并且结果中不包含空字符串。

而对于splitmethod连续的分隔符由空字符串分隔。以及字符串开头或结尾的分隔符与空字符串相邻。

所以在你的例子中, split_whitespace给出["a"]split给出["a", ""]