代码之家  ›  专栏  ›  技术社区  ›  Iravanchi

在C中查找数字字符的数值#

  •  6
  • Iravanchi  · 技术社区  · 13 年前

    Unicode字符中有几个表示数字的范围,其中 char.IsDigit 退货 true 。例如:

    bool b1 = char.IsDigit('\uFF12');    // full-width '2' -> true
    bool b2 = char.IsDigit('\u0665');    // true
    bool b3 = char.IsDigit('5');         // true
    

    我正在寻找一种方法来获得这些字符的数字等价物。请注意 int.Parse(...) 不起作用,因为它要求输入字符在基本unicode范围内(“0”..“9”)。

    这相当于Java的 Character.digit(...) 行为

    由于.NET框架的 char.Is数字 方法正确地将这些字符标识为数字,我希望它也具有此功能,但我什么也找不到。

    1 回复  |  直到 13 年前
        1
  •  8
  •   Jon Skeet    13 年前

    你试过了吗 Char.GetNumericValue ?(我只是启动我的Windows笔记本电脑来检查:)

    编辑:刚试过-看起来很管用:

    Console.WriteLine(char.GetNumericValue('\uFF12'));  // 2
    Console.WriteLine(char.GetNumericValue('\u0665'));  // 5
    Console.WriteLine(char.GetNumericValue('5'));       // 5
    

    请注意 没有 只包括数字——它是任何数字字符。然而 IsDigit 只针对数字。例如:

    // U+00BD is the Unicode "vulgar fraction one half" character
    Console.WriteLine(char.IsDigit('\u00bd'));         // False
    Console.WriteLine(char.GetNumericValue('\u00bd')); // 0.5
    
    推荐文章