Unicode char::is_digit和char::is_numeric之间的区别是什么?

Unicode char::is_digit和char::is_numeric之间的区别是什么?,unicode,utf-8,rust,Unicode,Utf 8,Rust,char::is_digit和char::is_numeric之间有什么区别 我注意到,一般数字字符在转换为数字时会出现无效数字错误;是否可以获取数字字符的数值?这样做有效吗?根据定义,“数字”仅定义为以下字符:0-9a-za-z 函数看起来只是检查值是否是一个数字。文档中有一些很酷的例子 根据定义,“数字”仅定义为以下字符:0-9a-za-z 函数看起来只是检查值是否是一个数字。文档中有一些很酷的例子 char::is_numeric检查字符是否为数字(特别是如果它属于Unicode通用类别N

char::is_digit
char::is_numeric
之间有什么区别

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

根据定义,“数字”仅定义为以下字符:
0-9
a-z
a-z

函数看起来只是检查值是否是一个数字。文档中有一些很酷的例子

根据定义,“数字”仅定义为以下字符:
0-9
a-z
a-z


函数看起来只是检查值是否是一个数字。文档中有一些很酷的例子

char::is_numeric
检查字符是否为数字(特别是如果它属于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

char::is_numeric
检查字符是否为数字(特别是如果它属于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