我只需要從這樣的字串中獲取整數 "Critical: 3\r\n" ,請注意值每次都會更改,因此我無法搜索“3”,我需要搜索通用 int。
謝謝。
uj5u.com熱心網友回復:
有很多方法可以做到。已經有了一些答案。這是另一種方法:
let s = "Critical: 3\r\n";
let s_res = s.split(":").collect::<Vec<&str>>()[1].trim();
println!("s_res = {s_res:?}"); // "3"
在上面的代碼s_res中將是一個字串 ( &str)。要將字串轉換為整數,您可以執行以下操作:
let n: isize = s_res.parse().expect("Failed to parse the integer!");
println!("n = {n}"); // 3
請注意,根據您的需要,您可能需要添加一些額外的驗證/斷言,以防您預計模式可能會改變(例如,冒號的數量不是 1 等)。
uj5u.com熱心網友回復:
基于@AlexanderKrauze 的評論,最常見的方法是使用正則運算式,它可以讓您在字串中查找任何模式:
let your_text = "Critical: 3\r\n";
let re = Regex::new(r"\d ").unwrap(); // matches any amount of consecutive digits
let result:Option<Match> = re.find(your_text);// returns the match
let number:u32 = result.map(|m| m.as_str().parse::<u32>().unwrap()).unwrap_or(0); // converts to int
print!("{}", number);
將是代碼。只有一位數字r"\d"。
更多檔案可在此處找到。
uj5u.com熱心網友回復:
您可以使用chars在字串的字符上獲取迭代器,然后在該迭代器上應用過濾器以僅過濾掉digits( is_digit)。
fn main() {
let my_str: String = "Critical: 3\r\n".to_owned();
let digits: String = my_str.chars().filter(|char| char.is_digit(10)).collect();
println!("{}", digits)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516491.html
標籤:细绳锈整数
