HelpF.pro

Функция получить строку на латинском, Транслит

Код 1C v 8.х
 Функция Транслит(Вход) 
Коды = Новый Соответствие;
Коды.Вставить("ё","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);
Зн = Коды.Получить(Бкв);
Выход = Выход + ?(Зн = Неопределено, Бкв, Зн);
КонецЦикла;
Возврат Выход;
КонецФункции

//еще пример функции, возвращает значение в верхнем регистре
Код 1C v 8.х
 Функция ПолучитьСтрокуНаЛатинском(ИсходныйТекст)
СоответствиеСимволов = Новый Соответствие;
СоответствиеСимволов.Вставить("А", "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);
ТекущийГотовыйСимвол = СоответствиеСимволов.Получить(ТекущийСимвол);
Если ТекущийГотовыйСимвол = Неопределено Тогда
ГотовоеЗначение = ГотовоеЗначение + ТекущийСимвол;
Иначе
ГотовоеЗначение = ГотовоеЗначение + ТекущийГотовыйСимвол;
КонецЕсли;

КонецЦикла;
Возврат ГотовоеЗначение;
КонецФункции

//Использование:
Сообщить(ПолучитьСтрокуНаЛатинском("Забарчук Юлия"));
//Выведет: ZABARCHUK YULIYA

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/796.html