Rust 字串split概述 - 字串切割
最近做Codewars做到一個很有趣的題目
需要做資料切割
但有時候怎麼切都覺得很奇怪,不知為什麼出現空白
做了一些研究寫下來當作心得
split
split被歸類在str下面
文件[1]這樣解釋split
一個用於字串切片的子字串的迭代器,由匹配的字元切割
翻譯成白話大概就是
會由匹配的字元分割一個字串切片,並且返回迭代器
pub fn split<'a, P>(&'a self, pat: P) -> Split<'a, P>
where
P: Pattern<'a>,
self為一個str
pat通常會是一個char或是&str
返還一個Split迭代器
例子
舉一個簡單的例子
let tmp = "Hello world";
let mut res = tmp.split(" ");
println!("Result: {:?}", res.next().unwrap());
println!("Result: {:?}", res.next().unwrap());
第一行為Hello world
第二行為透過" "一個空白鍵分割字串
第三行及第四行,透過next獲取迭代器的值,並且使用unwrap把Some的值取出
最後出現
Result: Hello
Result: world
而如果透過"l"分割會發生什麼事?
let tmp = "Hello world";
let res = tmp.split("l");
for i in res {
println!("Result: {}", i);
}
想得到答案是什麼嗎
答案:
Result: He
Result:
Result: o wor
Result: d
第一個結果He很好理解,就是透過分割第一個l後的第一個元素
第二個結果是"",因為兩個"l"之間沒有元素但又需要分割,因此出現空白
第三個o wor則是第二個l到第三個"l"之間的數
最後d則是第三個"l"之後的數值
參考資料
[1] https://doc.rust-lang.org/std/primitive.str.html#method.split
0 comments:
張貼留言