Узнать к какому типу относится символ

185
06 марта 2018, 01:26

В общем, есть 2 строки, формат которых нужно проанализировать на похожесть.

Я хотел параллельно идти по 2-ум строкам и сравнивать принадлежность символа к конкретному типу (цифра, буква и т д).

Есть статические методы char, но они неудобны. Хотелось бы иметь чего-то, что возвращает перечисление.

Есть ли в .NET что-либо готовое или нужно пилить собственное решение, которое будет оборачивать статические методы char и возвращать перечисление?

Answer 1

Такое перечисление уже есть: это UnicodeCategory. Вы можете классифицировать символ при помощи CharUnicodeInfo.GetUnicodeCategory.

Например, вот такой код:

string s = "Это 2048, юбилейный выпуск!";
foreach (var c in s)
    Console.WriteLine($"Символ: {c}, категория: {CharUnicodeInfo.GetUnicodeCategory(c)}");

на моей машине выдаёт:

Символ: Э, категория: UppercaseLetter
Символ: т, категория: LowercaseLetter
Символ: о, категория: LowercaseLetter
Символ:  , категория: SpaceSeparator
Символ: 2, категория: DecimalDigitNumber
Символ: 0, категория: DecimalDigitNumber
Символ: 4, категория: DecimalDigitNumber
Символ: 8, категория: DecimalDigitNumber
Символ: ,, категория: OtherPunctuation
Символ:  , категория: SpaceSeparator
Символ: ю, категория: LowercaseLetter
Символ: б, категория: LowercaseLetter
Символ: и, категория: LowercaseLetter
Символ: л, категория: LowercaseLetter
Символ: е, категория: LowercaseLetter
Символ: й, категория: LowercaseLetter
Символ: н, категория: LowercaseLetter
Символ: ы, категория: LowercaseLetter
Символ: й, категория: LowercaseLetter
Символ:  , категория: SpaceSeparator
Символ: в, категория: LowercaseLetter
Символ: ы, категория: LowercaseLetter
Символ: п, категория: LowercaseLetter
Символ: у, категория: LowercaseLetter
Символ: с, категория: LowercaseLetter
Символ: к, категория: LowercaseLetter
Символ: !, категория: OtherPunctuation

Стандарт Unicode, на котором основывается классификация, меняется со временем, так что и результаты, возвращаемые функцией, могут измениться с установкой какого-нибудь сервис-пака. Впрочем, к часто используемым символам это предупреждение не относится: их классификация меняться будет вряд ли.

READ ALSO
Работа с удаленным MySQL

Работа с удаленным MySQL

Собственно, купил хост для сайтаТам через cPanel создал новую SQL бд

166
Проверка на null перед GetValueOrDefault

Проверка на null перед GetValueOrDefault

Linq, метод Sum для nullable-типов:

164
Цветовая модель HSV(HSB). Перевод из RGB

Цветовая модель HSV(HSB). Перевод из RGB

Недавно сталкнулся с задачей, в одном элементе которой требовалось преобразование

153