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') にあることを想定しているため、機能しないことに注意してください。

Character.digit(...)これは Java の動作と同等です。

.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 に答える