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

Нужно заменить ghbdtn => привет и наоборот. Вроде бы уже есть куча таких вопросов. Некоторые рекомендуют использовать кодировку. Пытался и особо ничего не получилось. Очень не хотелось бы просто хардкодить, но пока что вижу только этот вариант. Пишу на c#


Ответы (1 шт):

Автор решения: rotabor

Это может быть сделано следующим образом:

using System;
static class Program {
    static char[] ru, en;
    static char Ru2En(char ch) { return en[Array.IndexOf(ru, ch)]; }
    static void Main() {
        ru = "йцу".ToCharArray();
        en = "qwe".ToCharArray();
        char ch;
        while ((ch = Console.ReadKey().KeyChar) != 27) Console.WriteLine(Ru2En(ch));
    }
}

Нужно всю раскладку захардкодить в ru и en, и учесть регистр.

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

→ Ссылка