Получить строку на латинском. Транслит в 1С.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Функция ПолучитьТранслит(СтрокаДляРазбора) КодыСимв = Новый Соответствие; КодыСимв.Вставить("ё","yo"); КодыСимв.Вставить("Ё","Yo"); Нач = КодСимвола("А"); Англ = "A" "B" "V" "G" "D" "E" "Zh" "Z" "I" "Y" "K" "L" "M" "N" "O" "P" "R" "S" "T" "U" "F" "Kh" "Ts" "Ch" "Sh" "Shch" "" "Y" "" "E" "Yu" "Ya" "a" "b" "v" "g" "d" "e" "zh" "z" "i" "y" "k" "l" "m" "n" "o" "p" "r" "s" "t" "u" "f" "kh" "ts" "ch" "sh" "shch" "" "y" "" "e" "yu" "ya"; Для К = Нач по КодСимвола("я") Цикл КодыСимв.Вставить(Символ(К), СтрПолучитьСтроку(Англ, К - Нач + 1)); КонецЦикла; ЗначениеВозврата = ""; Для К=1 по СтрДлина(СтрокаДляРазбора) Цикл Бкв = Сред(СтрокаДляРазбора,К,1); Зн = КодыСимв.Получить(Бкв); ЗначениеВозврата = ЗначениеВозврата + ?(Зн = Неопределено, Бкв, Зн); КонецЦикла; Возврат ЗначениеВозврата; КонецФункции |
Получить транслит в верхнем регистре в 1С
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 |
Функция ПолучитьТранслитВВерхнемРегистре(СтрокаДляРазбора) КодыСимв = Новый Соответствие; КодыСимв.Вставить("А", "A"); КодыСимв.Вставить("Б", "B"); КодыСимв.Вставить("В", "V"); КодыСимв.Вставить("Г", "G"); КодыСимв.Вставить("Д", "D"); КодыСимв.Вставить("Е", "E"); КодыСимв.Вставить("Ё", "E"); КодыСимв.Вставить("Ж", "ZH"); КодыСимв.Вставить("З", "Z"); КодыСимв.Вставить("И", "I"); КодыСимв.Вставить("Й", "Y"); КодыСимв.Вставить("К", "K"); КодыСимв.Вставить("Л", "L"); КодыСимв.Вставить("М", "M"); КодыСимв.Вставить("Н", "N"); КодыСимв.Вставить("О", "O"); КодыСимв.Вставить("П", "P"); КодыСимв.Вставить("Р", "R"); КодыСимв.Вставить("С", "S"); КодыСимв.Вставить("Т", "T"); КодыСимв.Вставить("У", "U"); КодыСимв.Вставить("Ф", "F"); КодыСимв.Вставить("Х", "KH"); КодыСимв.Вставить("Ц", "TS"); КодыСимв.Вставить("Ч", "CH"); КодыСимв.Вставить("Ш", "SH"); КодыСимв.Вставить("Щ", "SHCH"); КодыСимв.Вставить("Ъ", ""); КодыСимв.Вставить("Ы", "Y"); КодыСимв.Вставить("Ь", ""); КодыСимв.Вставить("Э", "E"); КодыСимв.Вставить("Ю", "YU"); КодыСимв.Вставить("Я", "YA"); СтрокаДляРазбора = СокрЛП(ВРег(СтрокаДляРазбора)); ЗначениеВозврата = ""; ТекущийСимвол = ""; ТекущийГотовыйСимвол = ""; Для к = 1 по СтрДлина(СтрокаДляРазбора) Цикл ТекущийСимвол = Сред(СтрокаДляРазбора, к, 1); ТекущийГотовыйСимвол = КодыСимв.Получить(ТекущийСимвол); Если ТекущийГотовыйСимвол = Неопределено Тогда ЗначениеВозврата = ЗначениеВозврата + ТекущийСимвол; Иначе ЗначениеВозврата = ЗначениеВозврата + ТекущийГотовыйСимвол; КонецЕсли; КонецЦикла; Возврат ЗначениеВозврата; КонецФункции |
Как использовать:
1 |
Сообщить(ПолучитьТранслитВВерхнемРегистре("Ирина")); |
Получим: IRINA