我正在 Rust 中對字串進行一些處理,我需要能夠從該字串中提取最后一組字符。換句話說,給定一個如下所示的字串:
some|not|necessarily|long|name
我需要能夠獲取該字串的最后一部分,即“名稱”并將其放入另一個字串或 &str,方式如下:
let last = call_some_function("some|not|necessarily|long|name");
所以最后變成等于“名稱”。
有沒有辦法做到這一點?是否有字串函式可以輕松完成此操作?如果沒有(在查看檔案后,我懷疑是否存在),在 Rust 中如何做到這一點?
uj5u.com熱心網友回復:
雖然@effect 的答案是正確的,但它不是最慣用的方法,也不是最高效的方法。它將遍歷整個字串并匹配所有|s 以到達最后一個。你可以讓它變得更好,但有一種方法str可以完全滿足你的需求 - rsplit_once():
let (_, name) = s.rsplit_once('|').unwrap();
// Or
// let name = s.rsplit_once('|').unwrap().1;
//
// You can also use a multichar separator:
// let (_, name) = s.rsplit_once("|").unwrap();
// But in the case of a single character, a `char` type is likely to be more performant.
游樂場。
uj5u.com熱心網友回復:
您可以使用String::split()方法,該方法將回傳由該分隔符拆分的子字串的迭代器,然后使用Iterator::last()方法回傳迭代器中的最后一個元素,如下所示:
let s = String::from("some|not|necessarily|long|name");
let last = s.split('|').last().unwrap();
assert_eq!(last, "name");
另請注意,字串 slices ( &str) 也實作了該split方法,因此您無需使用std::String.
let s = "some|not|necessarily|long|name";
let last = s.split('|').last().unwrap();
assert_eq!(last, "name");
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381635.html
