打印出以下代码:
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)
根据方法 docs,split_whitespace返回std::str::SplitWhitespace,它是字符串的非空白子字符串上的迭代器,由任意数量的空白分隔。这意味着它可以分割多个空格,并且结果中不包含空字符串。
而对于splitmethod,
连续的分隔符由空字符串分隔。以及字符串开头或结尾的分隔符与空字符串相邻。
所以在你的例子中, split_whitespace给出["a"]但split给出["a", ""]。
| 归档时间: |
|
| 查看次数: |
2637 次 |
| 最近记录: |