6

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.IsDigit方法可以正确识别数字等字符,因此我希望它也具有此功能,但我找不到任何东西。

4

1 回答 1

8

你试过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
于 2012-09-27T21:05:53.333 回答