Есть ли тип enum для писем в.NET Framework?
Мне нужен тип enum, который определяет буквы для использования в проекте. Есть ли такой тип перечисления в.NET Framework?
2 ответа
Учитывая, что нет доступных перечислений, быстрый способ создания перечислимого (IEnumerable of Char), который содержит все буквы набора символов...
var letters = Enumerable.Range(0, 255).Select(Convert.ToChar).Where(Char.IsLetter);
Вы можете 'или' группа методов с IsDigit или IsPunctuation, чтобы включить дополнительные буквы.
Примечание: у этого подхода есть ограничения и допущения. Проверьте это...
Символы Юникода делятся на категории. Категория персонажа является одним из его свойств. Например, символом может быть заглавная буква, строчная буква, десятичное число, буква, пунктуация соединителя, математический символ или символ валюты. Класс UnicodeCategory возвращает категорию символа Unicode. Для получения дополнительной информации о символах Unicode см. Стандарт Unicode.
Источник: Как определить, поддерживает ли экземпляр CultureInfo латинские символы
.NET Framework использует структуру Char для представления символа Unicode. Стандарт Unicode идентифицирует каждый символ Unicode с помощью уникального 21-битного скалярного числа, называемого кодовой точкой, и определяет форму кодирования UTF-16, которая определяет, как кодовая точка кодируется в последовательность из одного или нескольких 16-битных значений. Каждое 16-битное значение варьируется от шестнадцатеричного 0x0000 до 0xFFFF и сохраняется в структуре Char. Значением объекта Char является его 16-разрядное числовое (порядковое) значение.
Источник: http://msdn.microsoft.com/en-us/library/System.Char(v=vs.110).aspx
Какой из сотен алфавитов общего пользования в мире вы имели в виду? Что является проблемой, конечно.
Худшая проблема заключается в том, что даже в языках, которые приняли один и тот же алфавит, порядок букв не одинаков. Например, датчане ставят å первым, а не последним. Ухудшая свойства перечисления, невозможно придумать перечисление, которое может представлять алфавит. Если это действительно неясный, который используется только в одной маленькой части мира или ваша программа не продвигается слишком далеко. Довольно маловероятно в эпоху Интернета.
Убедитесь, что вы не пытаетесь, держите его char
, И никогда не забывайте о необходимости System.StringComparison