char::is_digit
和char::is_numeric
之间的区别是什么?
我注意到一般数字字符在转换为数字时会产生无效的数字错误;是否可以获取数字字符的数值?这是有效的吗?
答案 0 :(得分:3)
char::is_numeric
检查字符是否为数字according to Unicode(特别是如果它属于Unicode常规类别Nd,Nl和No),而char::is_digit
可以识别不同于基数的常规数字和数字10(最多36),例如十六进制a
- f
(基数16)。
示例差异:
assert!(char::is_numeric('a')); // fails
assert!(char::is_digit('a', 10)); // fails
assert!(char::is_digit('a', 16)); // works
获取字符的数值是可以的 - 你只需要提供正确的基数:
println!("{}", 'a'.to_digit(16).unwrap()); // 10
println!("{}", 'z'.to_digit(36).unwrap()); // 35
答案 1 :(得分:1)
根据Rust docs,'数字'被定义为仅包含以下字符:0-9
a-z
A-Z
。
is_numeric
函数看起来只是检查该值是否实际上是一个数字,文档中有一些很酷的例子。