如何检查一个字符是 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 '.'
}
我想检查单个 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 '.'
}