C中Char.IsDigit() 和 Char.IsNumber() 之间有什么差异?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

有什么区别在C#?

提问于
用户回答回答于

Char.IsDigit() 是Char.IsNumber()的子集

有些字符是“数字”,但不是数字,其中包括0x00b2和0x00b3,它们都是迷信的2和3(“2”和“3”),还有一些符号是“1/4”、“1/5”和“1/4”。

请注意,有相当多的字符回报因为这并不在ASCII的0x30到0x39的范围内,例如这些泰国数字字符:“‘’consib‘”’再转嫁‘’“再转轨”‘’‘“consitive”’‘consignal’‘’consignal‘’consi@@

这段代码片段告诉你哪些代码点不同:

static private void test()
{
    for (int i = 0; i <= 0xffff; ++i)
    {
        char c = (char) i;

        if (Char.IsDigit( c) != Char.IsNumber( c)) {
            Console.WriteLine( "Char value {0:x} IsDigit() = {1}, IsNumber() = {2}", i, Char.IsDigit( c), Char.IsNumber( c));
        }
    }
}
用户回答回答于

我找到了答案:

查。IsNumber()确定Char是否属于任何数字Unicode类别。这与IsDigit形成了对比,IsDigit确定一个字符是否是基数-10位数. 中的下列类别的成员Unicode类别*

  1. 十进制数字字符,即0到9范围内的字符。由Unicode名称“ND”(数字,十进制数字)表示。值是8。
  2. 用字母表示的数字,而不是小数,例如,表示五的罗马数字,即“V”。该指示符由Unicode名称“NL”(编号、字母)表示。值是9。
  3. 既不是十进制数字也不是字母数字的数字,例如,分数1/2。指示符由Unicode名称“No”表示(编号,其他)。值是10。

扫码关注云+社区