| |||
![]()
|
![]() ![]() |
![]()
Транслит и C# Задача - написать транслитер на C# (Csharp). Длря решения этой задачи воспользуемся таким чудом C# (Csharp), Например: Dictionary<string, string> dict = new Dictionary<string, string>(); Обьявляем словарь который будет работать с типами String. Рассмотрим уже на практике добавление параметров в словарь. Для этого создадим новый проект в Visual Studio 2005 и положим на форму два компонента TextBox: textBox1 и textBox2. В первый будем вводить русский текст, во вротом будем получать текст на транслите. Обьявляем наш словарь: Dictionary<string, string> words = new Dictionary<string, string>(); Теперь добавим наши значения русских букв, и их аналоги на транслите. Для этого используем метод Add(string, string): words.Add("а", "a"); words.Add("б", "b"); .. Этот код можно добавить после InitializeComponent(). Дальше нужно написать код замены букв с использованием Dictionary. Сделаем что б при вводе текста в первое поле ввода, во втором сразу отображался аналог текста, но на транслите. Для этого обрабатываем событие TextChanged нашего textBox1: string source = textBox1.Text; foreach (KeyValuePair<string, string> pair in words) { source = source.Replace(pair.Key, pair.Value); } textBox2.Text = source; Код довольно простой, мы получаем строку которую содержит textBox1, проходим по ней циклом и заменяем все что попало в наш словарь как ключ-значение. После цикла присваиваем textBox2 обработанную строку. Это позволяет получать транслит сразу после ввода русских букв в первом поле ввода. Вот итоговый вариант: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Transliter { public partial class Form1 : Form { Dictionary<string, string> words = new Dictionary<string, string>(); public Form1() { InitializeComponent(); words.Add("а", "a"); words.Add("б", "b"); words.Add("в", "v"); words.Add("г", "g"); words.Add("д", "d"); words.Add("е", "e"); words.Add("ё", "yo"); words.Add("ж", "zh"); words.Add("з", "z"); words.Add("и", "i"); words.Add("й", "j"); words.Add("к", "k"); words.Add("л", "l"); words.Add("м", "m"); words.Add("н", "n"); words.Add("о", "o"); words.Add("п", "p"); words.Add("р", "r"); words.Add("с", "s"); words.Add("т", "t"); words.Add("у", "u"); words.Add("ф", "f"); words.Add("х", "h"); words.Add("ц", "c"); words.Add("ч", "ch"); words.Add("ш", "sh"); words.Add("щ", "sch"); words.Add("ъ", "j"); words.Add("ы", "i"); words.Add("ь", "j"); words.Add("э", "e"); words.Add("ю", "yu"); words.Add("я", "ya"); words.Add("А", "A"); words.Add("Б", "B"); words.Add("В", "V"); words.Add("Г", "G"); words.Add("Д", "D"); words.Add("Е", "E"); words.Add("Ё", "Yo"); words.Add("Ж", "Zh"); words.Add("З", "Z"); words.Add("И", "I"); words.Add("Й", "J"); words.Add("К", "K"); words.Add("Л", "L"); words.Add("М", "M"); words.Add("Н", "N"); words.Add("О", "O"); words.Add("П", "P"); words.Add("Р", "R"); words.Add("С", "S"); words.Add("Т", "T"); words.Add("У", "U"); words.Add("Ф", "F"); words.Add("Х", "H"); words.Add("Ц", "C"); words.Add("Ч", "Ch"); words.Add("Ш", "Sh"); words.Add("Щ", "Sch"); words.Add("Ъ", "J"); words.Add("Ы", "I"); words.Add("Ь", "J"); words.Add("Э", "E"); words.Add("Ю", "Yu"); words.Add("Я", "Ya"); } private void textBox1_TextChanged(object sender, EventArgs e) { string source = textBox1.Text; foreach (KeyValuePair<string, string> pair in words) { source = source.Replace(pair.Key, pair.Value); } textBox2.Text = source; } } } В итоге мы получили транслитер, который динамически обрабатывает введенный пользователем текст. Источник: Автор: Макагон Сергей Источник: http://www.realcoding.net/articles/tran И исходник класса транслиттера: http://yadi.sk/d/mzhpj_jA0d6Ky |
||||||||||||||||
![]() |
![]() |