Транслит на C#

C#   30 сентября 2013  Автор статьи:  

Иногда требуется перевести русский текст в транслит. Конечно, для этого можно применить онлайн конвертеры, но могут возникать ситуации, когда вам требуется это сделать в коде вашей программы. Поэтому, чтобы вы не изобретали велосипед, я дам готовый код конвертера. В основе него будет лежать словарь, который каждой букве русского языка будет сопоставлять набор букв латинского алфавита. Если вы считаете, что я неправильно представляю какую-то букву, то можете сами заменить представление на более подходящее. Для получения результата, достаточно вызвать функцию GetTranslit, но перед ее вызовом надо проинициализировать словарь. Я это делаю в функции prepareTranslit, но вы можете вставить код заполнения Dictionary туда, куда вам будет удобнее. Также хочется отметить, что функция получения транслита работает за O(N) и лишена различных проблем, которые можно встретить в других реализациях на просторах интернета.

private static Dictionary transliter = new Dictionary();
private static void prepareTranslit()
{
transliter.Add("а", "a");
transliter.Add("б", "b");
transliter.Add("в", "v");
transliter.Add("г", "g");
transliter.Add("д", "d");
transliter.Add("е", "e");
transliter.Add("ё", "yo");
transliter.Add("ж", "zh");
transliter.Add("з", "z");
transliter.Add("и", "i");
transliter.Add("й", "j");
transliter.Add("к", "k");
transliter.Add("л", "l");
transliter.Add("м", "m");
transliter.Add("н", "n");
transliter.Add("о", "o");
transliter.Add("п", "p");
transliter.Add("р", "r");
transliter.Add("с", "s");
transliter.Add("т", "t");
transliter.Add("у", "u");
transliter.Add("ф", "f");
transliter.Add("х", "h");
transliter.Add("ц", "c");
transliter.Add("ч", "ch");
transliter.Add("ш", "sh");
transliter.Add("щ", "sch");
transliter.Add("ъ", "j");
transliter.Add("ы", "i");
transliter.Add("ь", "j");
transliter.Add("э", "e");
transliter.Add("ю", "yu");
transliter.Add("я", "ya");
transliter.Add("А", "A");
transliter.Add("Б", "B");
transliter.Add("В", "V");
transliter.Add("Г", "G");
transliter.Add("Д", "D");
transliter.Add("Е", "E");
transliter.Add("Ё", "Yo");
transliter.Add("Ж", "Zh");
transliter.Add("З", "Z");
transliter.Add("И", "I");
transliter.Add("Й", "J");
transliter.Add("К", "K");
transliter.Add("Л", "L");
transliter.Add("М", "M");
transliter.Add("Н", "N");
transliter.Add("О", "O");
transliter.Add("П", "P");
transliter.Add("Р", "R");
transliter.Add("С", "S");
transliter.Add("Т", "T");
transliter.Add("У", "U");
transliter.Add("Ф", "F");
transliter.Add("Х", "H");
transliter.Add("Ц", "C");
transliter.Add("Ч", "Ch");
transliter.Add("Ш", "Sh");
transliter.Add("Щ", "Sch");
transliter.Add("Ъ", "J");
transliter.Add("Ы", "I");
transliter.Add("Ь", "J");
transliter.Add("Э", "E");
transliter.Add("Ю", "Yu");
transliter.Add("Я", "Ya");
}
public static string GetTranslit(string sourceText)
{
StringBuilder ans = new StringBuilder();
for (int i = 0; i < sourceText.Length; i++) { if (transliter.ContainsKey(sourceText[i].ToString())) { ans.Append(transliter[sourceText[i].ToString()]); } else { ans.Append(sourceText[i].ToString()); } } return ans.ToString(); }

Научиться программировать

  • на Delphi

  • на Java

  • на C++