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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
private static Dictionary<string, string> transliter = new Dictionary<string, string>();
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++