Найти числовое значение символа цифры в C#
в символах Юникода есть несколько диапазонов, которые представляют цифры, для которых 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 framework char.IsDigit
метод правильно определяет такие символы как цифры, я ожидаю, что он также будет иметь эту функциональность, но я ничего не смог найти.
1 ответов
вы пробовали Char.GetNumericValue
? (Я просто загружаю свой ноутбук Windows, чтобы проверить :)
EDIT: просто попробовал - похоже, это работает:
Console.WriteLine(char.GetNumericValue('\uFF12')); // 2
Console.WriteLine(char.GetNumericValue('\u0665')); // 5
Console.WriteLine(char.GetNumericValue('5')); // 5
обратите внимание, что это не просто цифры - это все цифры. Однако,IsDigit
is только для цифр. Например:
// U+00BD is the Unicode "vulgar fraction one half" character
Console.WriteLine(char.IsDigit('\u00bd')); // False
Console.WriteLine(char.GetNumericValue('\u00bd')); // 0.5