Rust中有没有一种方法可以在不使用正则表达式的情况下判断字符串是否包含浮点数?

给出类似结果的东西(使用regex: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的任何类型.在这种情况下,f64ParseFloatError定义为将字符串转换为浮点数时可能出现的错误.

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

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

Rust相关问答推荐

收集RangeInclusive T到Vec T<><>

为什么BitVec缺少Serialize trait?

获取字符串切片(&;str)上的切片([ia..ib])返回字符串

如何go 除铁 rust 中路径组件的第一项和最后一项?

无法从流中读取Redis请求

在我的Cargo 中,当我在建筑物中使用时,找不到我可以在产品包中使用的 crate .r我如何解决这个问题?

用于判断整数块是否连续的SIMD算法.

为什么Deref类特征不构成?

程序在频道RX上挂起

对reqwest提供的这种嵌套JSON struct 进行反序列化

为什么 vec![Vec::with_capacity(n)] 为子向量创建 0 容量?

在运行时在 Rust 中加载字体

当 T 不是副本时,为什么取消引用 Box 不会抱怨移出共享引用?

更好的方法来模式匹配带有 Rust 的窥视孔装配说明窗口?

是否有适当的方法在参考 1D 中转换 2D 数组

从函数返回 u32 的数组/切片

在单独的线程上运行 actix web 服务器

使用泛型作为关联类型,没有幻像数据

如何用另一个变量向量置换 rust simd 向量?

如何重写这个通用参数?