如何检查字符串是否代表浮点数?

时间:2015-10-03 11:22:33

标签: rust

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))

1 个答案:

答案 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的类型。在这种情况下,f64FromStr trait定义为将字符串转换为浮点数时可能出现的错误。

如果只是关心它是否为数字,您可以使用ParseFloatError

fn main() {
    let is_num = "1.23".parse::<f64>().is_ok();
    println!("Is a number: {}", is_num);
}
相关问题