我想檢查字符串是否以"|<any char><any char>TD"
開頭。我已經驗證該字符串只包含0..9,a-z,A-Z,空格,','和'*'。如果索引範圍無效,則獲取None而不是字符串切片
包括正則表達式箱這樣的任務是太多的開銷,而不是我想我需要這樣的東西
fn get_slice(s: &str, range: Range<usize>) -> Option<&str> {
unimplemented!();
}
它可以用於像:
let is_good_string: bool =
get_slice(s, (0..5)).map_or(false, |v: &str| &v[0..1] == "|" && &v[3..5] == "TD");
有什麼功能,在標準庫類似於我的get_slice
?是否有可能以其他方式藉助標準庫函數來解決我的任務?
你會通過切割這樣的字符串來傷害自己。查看關於[切分字符串]的書(https://doc.rust-lang.org/stable/book/strings.html#slicing)。 –
@ E_net4我讀過關於'str'的切片。你的意思是我會遇到utf-8的問題?在我的情況下,這不是問題,因爲我解析了與ASCII協同工作的舊協議。 – user1244932
這聽起來像是在編寫解析器。您可能希望查看允許您編寫高效解析器的工具,而不是手動執行所有操作。 nom是流行的選擇,專門用於解析二進制文件格式。 – Shepmaster