Как можно быстро получить все буквы русского или английского алфавита?

Просматривая исходник одной из программ, увидел следующую строку:

Как видно обычный лист, заполненный значениями, в плане синтаксиса ошибок нет, но есть один минус, все значения были введены вручную. С одной стороны значений не много, всего 26, в принципе можно и ввести, но если, к примеру, понадобиться добавить ещё один такой же лист, который будет содержать все буквы русского алфавита или сразу два списка обоих алфавитов в нижнем регистре, как быть тогда, тоже все руками вводить? Конечно, можно найти и скопировать уже готовый список значений и ничего вводить вручную не придется, но есть ещё один способ, о нём я расскажу в этой статье.

Как получить все буквы английского алфавита

Для начала вспоминаем, что есть такая вещь, как Unicode. Юникод — это стандарт кодирования символов, который позволяет представить знаки практически всех письменных языков Википедия. В данный момент в нём зарезервировано 1.112.064 позиций символов, из которых сейчас используется чуть более 100 000. Кодовое пространство Unicode разделено на 17 плоскостей. Нас интересует нулевая (базовая многоязычная) плоскость, имеющая диапазон от U+0000 до U+FFFF. Нулевая плоскость, содержит символы, часто употребительных письменностей и так же разбита на определенные области (диапазоны).

Латиница

Все области нас, конечно же, не интересуют, будем работать лишь с некоторыми диапазонами значений. И так, например, в нашей программе требуется получить все буквы английского алфавита от A до Z. Сразу надо пояснить, что Юникод не содержит буквы английского алфавита, точно так же, как и не содержит буквы немецкого, русского алфавита. А всё потому, что хоть мы и говорим, например буквы английского алфавита, на самом деле все буквы немецкого, итальянского, французского и того же английского языка состоят из 26 букв латинского алфавита. Поэтому нам нужно искать область, выделенную под латиницу.

Основной диапазон, выделенный под латиницу от U+0020 до U+007F (Основная латиница), где U Unicode, а следом идут четыре шестнадцатеричных числа. Вся эта область нам, конечно же, не нужна, потому что кроме букв, в нёй так же содержится ещё много других знаков и чисел, которые нас пока что не интересуют.

Для указания юникод последовательности в языке c# используется управляющая последовательность символов \u.

Юникод запись, например ‘\u0025’ можно сократить, если использовать другую управляющую последовательность символов \x

Результаты те же.

Выделенная область под латиницу занимает диапазон от \u0020 до \u007F (\x20 — \x7F). Этот основной диапазон, который кроме букв, так же содержит числа и символы (%, $, #), нам же нужен отрезок, который содержит только буквы латинского алфавита. Сразу хочу сказать, что буквы представлены, как в верхнем регистре, то есть все буквы от A до Z большие, так и в нижнем регистре, когда все буквы от a до z маленькие.

Область, выделенная под буквы верхнего регистра: от \x41 до \x5А

Шестнадцатеричная система не очень удобна для восприятия, поэтому переведем шестнадцатеричные коды в десятичную систему.

Как перевести число из шестнадцатеричной системы в десятичную

Сначала добавим строку: using System.Globalization;

Затем, берём шестнадцатеричный набор символов \x41, убираем первые два символа (\x) оставляем только 41, после чего используя метод parse, преобразуем строку в число.

либо обрезаем первые два символа

В результате преобразования получили число 65, если теперь подставить ‘\x5А’ и так же преобразовать строку в число, то получим число 90. Из этого следует, что диапазон от 65-90 — это и есть наш отрезок, в котором содержаться все латинские буквы в верхнем регистре, как видно ничего сложного.

Как перевести число в шестнадцатиричную систему

Обратный перевод dec в hex.

либо в unicode

В результате всех вычислений получаем следующую табличку:

Название Символы DEC HEX
Латиница A..Z 65..90 41..5A
Латиница a..z 97..122 61..7A

Теперь имея на руках данную таблицу, можно легко получить, к примеру, массив всех английских букв от A до Z в верхнем регистре.

Результат:

алфавит

А вот так, например можно вывести слово HELLO из полученного массива

Как получить все буквы русского алфавита

С латиницей, надеюсь всё понятно, теперь рассмотрим, как получить буквы русского алфавита. В отличие от английского алфавита, в русском используется Кириллица (Cyrillic), под которую так же в нулевой плоскости выделен определенный диапазон: U+0400..U+04FF (Unicode 1.1).

Название Символ DEC HEX DEC код Ё
Кириллица А…Я 1040..1071 0410..042F 1025
Кириллица а..я 1072..1103 0430..044F 1105

Как видно всё то же самое, но есть один нюанс, в диапазон значений не попадает буква Ё, как для нижнего, так и верхнего регистра.

В следующем примере показано, как получить все буквы русского алфавита от А до Я в верхнем регистре.

И напоследок таблица чисел

Название Символы DEC HEX
Числа 0..9 48..57 30..39

Читайте также:

Похожие темы

c# Функция автозавершения для textbox... Автозавершение при вводе данных в textbox В этой небольшой статье хочу показать на простом примере, как добавить возможность автозавершения при вводе...
Матричный метод решения СЛАУ. Распараллеливание с ... Цель работы: приобретение навыков разработки параллельных программ с использованием OpenMP. Задание: Разработать последовательную и параллель...
c# Как изменить данные в базе данных MySQL?... Изменение данных в базе данных MySQL В этой статье мы рассмотрим на нескольких простых примерах, как изменить данные в базе данных MySQL с помощью яз...
Матричный метод решения СЛАУ. Распараллеливание с ... Алгоритм матричного метода решения СЛАУ подробно описан в теме: Матричный метод решения СЛАУ (распараллеливание с openMP). Распараллелим этот а...
Как создать и добавить колонку в элементе DataGrid... Создание и добавление колонки в DataGridView В этой статье показано, как программно создать и добавить колонку в DataGridView. Создадим новое прил...