rust - 如何检查字符串是否代表 float ?

标签 rust

在 Rust 中有没有一种方法可以在不求助于正则表达式的情况下检查字符串是否包含 float ?

给出与此类似的结果(使用正则表达式: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.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),
    }
}

str::parse可以返回任何实现 FromStr trait 的类型.在本例中,f64 定义了 ParseFloatError作为将字符串转换为 float 时可能出现的错误。

如果您只是关心它是不是数字,您可以使用is_ok :

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

关于rust - 如何检查字符串是否代表 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921959/

相关文章:

rust - 一线模块转口

enums - 当枚举变体已知时解包内部类型

unicode - 如何计算 Rust 中字符串中的唯一字素簇?

graph - 拥有的arena数据结构

syntax - 有没有办法在循环的条件表达式中分配一个变量?

rust - 特性 `std::borrow::Borrow<char>` 没有为 `&str` 实现

rust - 根据编译目标操作系统,Rust 中将不同类型的值分配给变量的惯用方式是什么?

rust - 警告 "doc comment not used by rustdoc"是什么意思,我该如何解决?

generics - 为什么此生命周期不是 "expire"?

rust - 我可以阻止创建或使用类型的引用吗?