我想检查一下单个char是ASCII码('1' - '9')还是句点('.')。在Rust中做到这一点的最好方法是什么?我知道is_digit(10)是用于数字的,但是我该如何处理数字或句点(.)呢?
发布于 2021-02-06 22:08:28
char::is_numeric的一个小问题可能是它在多个ASCII 0..=9上匹配,例如:
'½'.is_numeric() == true如果你只想匹配ASCII 0..=9,这里有char::is_ascii_digit。
后者是使用matches!宏来实现的。您还可以将宏用于您的用例,例如:
if matches!(c, '0'..='9' | '.') {
// Character is ASCII digit '0' up to and including '9' or '.'
}发布于 2021-02-06 21:15:42
使用带有'.'相等性检查的is_numeric OR:
fn is_numeric_or_period(c: char) -> bool {
char::is_numeric(c) || c == '.'
}注意:对于ASCII码字符串,is_numeric匹配所有数字unicode字符,并且行为与is_ascii_digit相同,但是如果您正在处理unicode字符串,并且只想匹配ASCII码数字字符,则refer to @Jason's answer。
https://stackoverflow.com/questions/66077286
复制相似问题