Rust中是否有办法检查字符串是否包含浮点数而不使用正则表达式?
给出类似结果的东西(使用正则表达式:https://regex101.com/r/pV6wJ6/2)
re = Regex::new(r#"^-?(0|[1-9]\d*)(\.\d+)?$"#).unwrap()
assert_eq!(is_number(some_string), re.is_match(some_string))
答案 0 :(得分:23)
您没有提供任何示例,因此我将使用"1.23"
和"bob"
。
试着解析它:
fn main() {
let num = "1.23".parse::<f64>();
match num {
Ok(val) => println!("Yes, it was a number ({})", val),
Err(why) => println!("Doesn't look like a number ({})", why),
}
}
http://meteorpad.com/pad/JCy5WkFsrtciG9PR5/Copy%20of%20Leaderboard可以返回任何实现str::parse
的类型。在这种情况下,f64
将FromStr
trait定义为将字符串转换为浮点数时可能出现的错误。
如果只是关心它是否为数字,您可以使用ParseFloatError
:
fn main() {
let is_num = "1.23".parse::<f64>().is_ok();
println!("Is a number: {}", is_num);
}