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

时间:2012-09-27 21:04:29

标签: c# parsing numbers char

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方法正确地将这些字符标识为数字,我希望它也具有此功能,但我找不到任何内容。

1 个答案:

答案 0 :(得分:7)

你试过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