![]() |
![]() |
|
Перевод символов с кириллицы на латиницу | ☑ | ||
---|---|---|---|---|
0
чувак
24.09.08
✎
09:35
|
Вообщем средствами встроенного языка нужна такая функция.
Например, "Ровшанов Джамшут Абдуллаевич" надо переводить на "Rovshanov Dzhamshut Abdullaevich" Я написал функцию, но думаю она кривая :)) У кого есть мысли получше ? Функция Перевод() Кириллица = "А*Б*В*Г*Д*Е*Ж*З*И*К*Л*М*Н*О*П*Р*С*Т*У*Ф*Х*Ц*Ч*Ш*Щ*Э*Ю*Я*ЬЪ"; Латин = "A B V G D E ZHZ I K L M N O P R S T U F X TSCHSHSHE YUYA "; БукваЛатин = ""; Для А = 1 По СтрДлина(СокрЛП(АА)) Цикл БукваКирилл = Сред(АА,А,1); ПозицияБуквы = Найти(Кириллица,Врег(БукваКирилл)); БукваЛатин2 = СокрЛП(Сред(Латин,ПозицияБуквы,2)); Если БукваКирилл = Нрег(БукваКирилл)Тогда БукваЛатин2 = Нрег(БукваЛатин2); КонецЕсли; БукваЛатин = БукваЛатин + ?(БукваКирилл = " "," ",БукваЛатин2); КонецЦикла; Возврат БукваЛатин; КонецФункции |
|||
1
butterbean
24.09.08
✎
09:39
|
(0) ИМХО проще так:
СтрЗаменить(Стр,"Д","D"); СтрЗаменить(Стр,"Я","YA"); И так далее... |
|||
2
у лю 427
24.09.08
✎
09:40
|
дятлы...
за использование функций ЕСЛИ и СтрЗаменить в преобразовании принято бить морду идиотам... |
|||
3
чувак
24.09.08
✎
09:41
|
(1) Слишком много букоф будет
|
|||
4
чувак
24.09.08
✎
09:42
|
(2) Когда нить тебя найду и застрелю :)
|
|||
5
VasilyKushnir
24.09.08
✎
09:49
|
(2) Можешь предложить нечто более изящное? (Абсолютно без подвоха спрашиваю). У меня навскидку идея с двумя списками значений (это чтобы для двухнаправленой замены) - по номеру позиции из одного сз подставляет из такой же позиции из другого сз. А то действительно (4) может застрелить... (:-)
|
|||
6
у лю 427
24.09.08
✎
10:15
|
(4) для тебя приготовил ответную пулю из гавна...
(5) вся идея сто лет в обед как реализована Задача - перекодирование текста. Условия - каждый символ исходного текста д.б. заменен на 1 или несколько!!! символов выходного текста Реализация Шевелим мосхом, какой еще остался и вспоминаем, что в 1С есть массивы Создаем массив строк - как константу Массив [код исходного символа 0] = "Что выводить вместо исх символа с кодом 0" Массив [код исходного символа 1] = "Что выводить вместо исх символа с кодом 1" Массив [код исходного символа 2] = "Что выводить вместо исх символа с кодом 2" Массив [код исходного символа 3] = "Что выводить вместо исх символа с кодом 3" Массив [код исходного символа 4] = "Что выводить вместо исх символа с кодом 4" Массив [код исходного символа 5] = "Что выводить вместо исх символа с кодом 5" ............ и так далее до 255 символа перевод считанной строки специально расписываю разными операторами - чтобы было понятней ВыходнаяСтрока = ""; для Индекс = 1 по СтрДлина(ИсходнаяСТрока) цикл Код = кодСимвола( Сред (ИсходнаяСтрока,Индекс,1); ВыходнаяСтрока = ВыходнаяСТрока + Массив [КодСимвола] писец Мотоциклу в общем - примерно как в (5) - но сделано на массиве, ибо работа с массивом очень быстрая в отличие от списков. Длина массива заранее известна... |
|||
7
dk
24.09.08
✎
10:19
|
Задачка старая и решалась на форуме не один раз, называется транслитерация
ЗЫ правда поиск не нашел нифига :( |
|||
8
чувак
24.09.08
✎
10:20
|
(6) Вот где гавнометы водятся, я думал они с планеты Жупитер
|
|||
9
у лю 427
24.09.08
✎
10:21
|
примерно этот алгоритм реализован в любой ОС в таблицах перекодировки....
двунаправленная замена не всегда возможна... кстати.... |
|||
10
у лю 427
24.09.08
✎
10:22
|
(7) это не только транслитерация ....
|
|||
11
чувак
24.09.08
✎
10:22
|
(7) Я тоже не мог найти, поэтому обратился. А тут обрушились дятлофобы :)
|
|||
12
VasilyKushnir
24.09.08
✎
10:24
|
(6) Согласен - с массивами пошустрее будет, чем с СЗ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |