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

问题描述 投票:0回答:2

char::is_digitchar::is_numeric有什么区别?

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

unicode utf-8 rust
2个回答
3
投票

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

1
投票

根据Rust docs,'digit'被定义为仅以下字符:0-9 a-z A-Z

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

© www.soinside.com 2019 - 2024. All rights reserved.