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))
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的任何类型.在这种情况下,f64
将ParseFloatError
定义为将字符串转换为浮点数时可能出现的错误.
如果你关心它是否是一个数字,你可以使用is_ok
:
fn main() {
let is_num = "1.23".parse::<f64>().is_ok();
println!("Is a number: {}", is_num);
}