![]() |
Транслитерация на С++, Java, C#.
Товарищи нет ли у кого программы для транслитерации написанной на С++,Java,C#?Вот нашел в сети немного инфы что скажете?Как лучше сделать такую прогу?
Код:
Гугл видимо не знает о реализации транслитерации на C#. Следующий код взят из плагина Rus to Lat для Wordpress. |
D.Y. есть на VB.NET (выполнена в виде консольной программы), перенести на C# думаю проблем не составит.
А если всё же будет составлять, то для этих .NET языков есть конвертор Код:
Imports System |
Хороший пример, но возможно придется переделать немного(дописать нижний регистр) ведь здесь нет учета регистра.Я думаю что так будет правильнее.
|
D.Y., здесь есть учёт регистров.
Код:
If Cyrillic2Translit.ContainsKey(ch) Then |
прошу прощения не заметил.
|
А как можно сделать обратную транслитерацию снова использовать массивы или есть какая нибудь функция ?
|
D.Y., если на VB.NET то готовой функции нету.
Да можно воспользоваться словарём. Для некоторых букв (.Add("Ъ", "'"), .Add("Ь", "'")) или предлагать пользователю при распознании варианты, или самостоятельно в программе анализировать (по частоте использования в языке или более сложный вариант - по грамматическим правилам). Буквы транслирующие в несколько (.Add("Ж", "Zh"), .Add("Ц", "Ts"), .Add("Ч", "Ch"), .Add("Ш", "Sh"), .Add("Щ", "Sch")) - заслуживают отдельной обратной транслитерации. |
Есть вот такой вариант транслитерации но у меня почему то не отображает текст во втором "Textboxе".Не могли бы вы мне подсказать в чем причина??
Код:
using System; |
D.Y., не знакома конструкция - KeyValuePair<string, string> pair in words.
Функцию private void textBox1_TextChanged(object sender, EventArgs e) переписал бы так Код:
private void textBox1_TextChanged(object sender, EventArgs e) В этом случаи в C#, в отличии от VB.NET, сами буквы должны быть заключены в одинарные кавычки (на примере первой буквы - words.Add('а', "a"); вместо words.Add("а", "a");. |
Вот я немного переделал программу добавив проверку регистра тем самым избавив ее от избыточности
Код:
using System; |
D.Y., можно развернуть словарь (с Dictionary(Char, Of String) на Dictionary(Of String, Char)) и проверять присутствие по три, два и одному символу в словаре.
Текущий словарь, предложенный во втором посте, при развороте потеряет несколько букв. Нужно будет решить какие именно оставить .Add("E", "Е") или '.Add("E", "Ё") или же .Add("E", "Э") .Add("'", "Ъ") или .Add("Y", "Ы") В VB.NET варианте, без разпознавания регистра, это можно так реализовать. Код:
Class Translit |
Если честно то проблемы с преобразованием возникли в C# я VB вообще не пользовался пытался перевести вот что получилось.
Код:
using System; |
D.Y., в предыдущем посте во втором выборе букв имел ввиду следующий выбор (какую букву оставить), при повороте словаря
.Add("Y", "Й") или .Add("Y", "Ы") .Add("'", "Ъ") или .Add("'", "Ь") Код:
private void textBox3_TextChanged(object sender, EventArgs e) Например в VB.NET допустимо собирать строку с символов другой, в C# первоначально этой же строке нужно присвоить саму себя, а потом уже символы другой строки. По этому присуствует обнуление строки BufStr (BufStr = null;). |
Товарищи нет ли у кого программы для транслитерации написанной на С++,Java,C#?Вот нашел в сети немного инфы что скажете?Как лучше сделать такую прогу? »[/q]
Уважаемый D.Y, пишите ссылку на источник, при копировании материалов. А для всех остальных: Код:
Assert.AreEqual("Rabota s kirilitsiei", "Работа с кирилицей".Unidecode()); Так со всеми языками, исключая некоторые "экзотические". Перевод по таблице уникода, правда, только в одну сторону. Подробнее здесь: http://usanov.net/1451-unidecode-sha...aciya-dlya-net И источник на оригинал поста от D.Y: http://usanov.net/748-transliteraciya-rus-2-lat-na-c |
Вот что я имею но при вводе в текстбокс3 ничего не происходит не знаю почему ведь текст бокс4 должен отображать результат
Код:
using System; |
Все уже разобрался виной всего оказалась банальная не внимательность.
|
Время: 13:10. |
Время: 13:10.
© OSzone.net 2001-