char :: is_digit和char :: is_numeric有什么区别?

时间:2018-01-02 20:40:30

标签: unicode utf-8 rust

char::is_digitchar::is_numeric之间的区别是什么?

我注意到一般数字字符在转换为数字时会产生无效的数字错误;是否可以获取数字字符的数值?这是有效的吗?

2 个答案:

答案 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函数看起来只是检查该值是否实际上是一个数字,文档中有一些很酷的例子。