При нажатии клавиши в английской раскладке, выводить русское значение клавиши - C#
Формулировка задачи:
Требуется чтобы при нажатии клавиши в английской раскладке, выводилось Русское значение клавиши. Например q это й. По возможности с учетом регистра.
Решение задачи: «При нажатии клавиши в английской раскладке, выводить русское значение клавиши»
textual
Листинг программы
using System;
using System.Linq;
using System.Text;
using System.Collections;
using System.Globalization;
internal sealed class Program {
static void Main() {
Int32 n = 0;
String s;
StringBuilder sb = new StringBuilder();
Hashtable ht = new Hashtable();
Char[] ru = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ".ToCharArray();
Enumerable
.Range(65, 26)
.Select(i => (Char)i)
.ToList()
.ForEach(i => {
ht.Add(i, ru[n]);
n++;
});
ht.Add('<', 'Б');
ht.Add(',', 'б');
ht.Add(':', 'Ж');
ht.Add(';', 'ж');
ht.Add('"', 'Э');
ht.Add('\'', 'э');
ht.Add('>', 'Ю');
ht.Add('.', 'ю');
Console.Write("Введите слово (например, \"ktrnhbr): ");
s = Console.ReadLine();
if (String.IsNullOrEmpty(s)) return;
s.ToCharArray().ToList().ForEach(i => {
Char c = Char.IsLower(i) ? Char.ToUpper(i, CultureInfo.InvariantCulture) : i;
sb.Append(Char.IsLower(i) ? Char.ToLower((Char)ht[c], CultureInfo.InvariantCulture) : ht[c]);
});
Console.WriteLine(sb.ToString());
}
}