При нажатии клавиши в английской раскладке, выводить русское значение клавиши - C#

Узнай цену своей работы

Формулировка задачи:

Требуется чтобы при нажатии клавиши в английской раскладке, выводилось Русское значение клавиши. Например q это й. По возможности с учетом регистра.

Решение задачи: «При нажатии клавиши в английской раскладке, выводить русское значение клавиши»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Collections;
  5. using System.Globalization;
  6.  
  7. internal sealed class Program {
  8.   static void Main() {
  9.     Int32 n = 0;
  10.     String s;
  11.     StringBuilder sb = new StringBuilder();
  12.     Hashtable ht = new Hashtable();
  13.     Char[] ru = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ".ToCharArray();
  14.    
  15.     Enumerable
  16.         .Range(65, 26)
  17.         .Select(i => (Char)i)
  18.         .ToList()
  19.         .ForEach(i => {
  20.           ht.Add(i, ru[n]);
  21.           n++;
  22.     });
  23.     ht.Add('<', 'Б');
  24.     ht.Add(',', 'б');
  25.     ht.Add(':', 'Ж');
  26.     ht.Add(';', 'ж');
  27.     ht.Add('"', 'Э');
  28.     ht.Add('\'', 'э');
  29.     ht.Add('>', 'Ю');
  30.     ht.Add('.', 'ю');
  31.    
  32.     Console.Write("Введите слово (например, \"ktrnhbr): ");
  33.     s = Console.ReadLine();
  34.     if (String.IsNullOrEmpty(s)) return;
  35.    
  36.     s.ToCharArray().ToList().ForEach(i => {
  37.       Char c = Char.IsLower(i) ? Char.ToUpper(i, CultureInfo.InvariantCulture) : i;
  38.       sb.Append(Char.IsLower(i) ? Char.ToLower((Char)ht[c], CultureInfo.InvariantCulture) : ht[c]);
  39.     });
  40.    
  41.     Console.WriteLine(sb.ToString());
  42.   }
  43. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы