2012-09-27 9 views
6

char.IsDigittrueを返す、数字を表すUnicode文字の範囲がいくつかあります。例:C#の桁文字の数値を検索

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メソッドでは、このような文字が数字として正しく識別されるため、この機能も期待していますが、何も見つかりませんでした。

答えて

7

Char.GetNumericValueを試しましたか? (私はちょうどチェックするために私のWindowsノートPCをブートアップしています:)

編集:ちょうどそれを試してみました - それが動作するようになっています。このはただの数字が含まれていないことを

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 
+0

はい、試してみました。ありがとう、ありがとう。私は 'char'クラスのメソッド全体をチェックしましたが、これを見落としてしまって困っています... – Iravanchi

+2

Jon Skeetのラップトップは早く起動します;) –

関連する問題