2
Львенок
27.03.04
✎
00:09
|
Проще простого. Идея: Одна русская буква может быть представлена одной (Д=D) или двумя (Я=YA) латинскими буквами.
Делаешь что-то вроде строки:
Транс="АA БB ВV ГG ДD ЕE ЁJOЖJ ..."; //Строка состоит из троек символов - первой идет русская буква, за ней английская транскрипция, если она из одной буквы, то она дополняется справа пробелом, если из двух, то пробел можно не ставить. Для маленких русских букв тоже.
Далее. На входе у тебя имя в русской транскрипции. Ты его сканируешь посимвольно.
Сим=Сред(Имя, К, 1);
Если символ находится в строке Транс, то ты его заменяешь на СокрП() от следующих за ним двух символов из строки Транс иначе просто его добавляем к строке в которой мы собираем Английский вариант имени:
Н=Найти(Транс,Сим);
Англ=Англ+?(Н>0,СокрП(Сред(Транс,Н+1,2)),Сим);
Вот, собственно, и все. Алгоритм не разжевываю до уровня программного кода. Если что-то неясно, извиняйте. У меня таким образом работает процедурка геренирующая названия полей в dbf, имен файлов и т.п. в утилите по переносу справочников между конфигурациями через dbf.
___
Искренне Ваш, Львенок.
|
|