char::is_digit
和char::is_numeric
有什么区别?
我注意到一般数字字符在转换为数字时会产生无效的数字错误;是否可以获取数字字符的数值?这是有效的吗?
char::is_numeric
检查字符是否为数字according to Unicode(特别是如果它属于Unicode General Categories 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
根据Rust docs,'digit'被定义为仅以下字符:0-9
a-z
A-Z
。
is_numeric
函数看起来只是检查该值是否实际上是一个数字,文档中有一些很酷的例子。