Unicode字符中有几个表示数字的范围,其中 char.IsDigit 退货 true 。例如:
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”)。
int.Parse(...)
这相当于Java的 Character.digit(...) 行为
Character.digit(...)
由于.NET框架的 char.Is数字 方法正确地将这些字符标识为数字,我希望它也具有此功能,但我什么也找不到。
char.Is数字
你试过了吗 Char.GetNumericValue ?(我只是启动我的Windows笔记本电脑来检查:)
Char.GetNumericValue
编辑:刚试过-看起来很管用:
Console.WriteLine(char.GetNumericValue('\uFF12')); // 2 Console.WriteLine(char.GetNumericValue('\u0665')); // 5 Console.WriteLine(char.GetNumericValue('5')); // 5
请注意 没有 只包括数字——它是任何数字字符。然而 IsDigit 是 只针对数字。例如:
IsDigit
// U+00BD is the Unicode "vulgar fraction one half" character Console.WriteLine(char.IsDigit('\u00bd')); // False Console.WriteLine(char.GetNumericValue('\u00bd')); // 0.5