如何检查一个字符是 ASCII 码还是句点?

How do I check if a char is an ASCII number or period?

我想检查单个 char 是 ASCII 数字 ('1' - '9') 还是句点 ('.')。在 Rust 中最好的方法是什么?我知道 is_digit(10) 用于数字,但我如何针对数字或句点 (.) 执行此操作?

使用 is_numeric 或与 '.' 相等性检查:

fn is_numeric_or_period(c: char) -> bool {
    char::is_numeric(c) || c == '.'
}

注意:is_numeric 匹配所有数字 unicode 字符,对于 ASCII 字符串,其行为与 is_ascii_digit 相同,但如果您使用的是 unicode字符串并且只想匹配 ASCII 数字字符然后 .

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 '.'
}