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

Jak*_*kub 7 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))
Run Code Online (Sandbox Code Playgroud)

She*_*ter 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),
    }
}
Run Code Online (Sandbox Code Playgroud)

str::parse可以返回任何实现FromStr特征的类型.在这种情况下,将字符串转换为浮点数时f64定义ParseFloatError为可能的错误.

如果你关心它是否是一个数字,你可以使用is_ok:

fn main() {
    let is_num = "1.23".parse::<f64>().is_ok();
    println!("Is a number: {}", is_num);
}
Run Code Online (Sandbox Code Playgroud)