Простенькая транслитерация

Для одного из банков при заказе карточек понадобилось транслитерировать имя и фамилию работника.
Пришлось написать простенькую функцию.

Для одного из банков при заказе карточек потребовалось указать транслитерированные имя и фамилию работников.

Пришлось провести исследования и написать простенькую функцию транслитерации почти 🙂 по стандарту ISO-R9-1968


Функция ЗаменитьОдниСимволыДругими(Что,Где,НаЧто) Экспорт
Рез = Где;
Для Сч = 1 По СтрДлина(Что) Цикл
Рез = СтрЗаменить(Рез,Сред(Что,Сч,1),Сред(НаЧто,Сч,1));
КонецЦикла;
Возврат Рез;
КонецФункции //ЗаменитьОдниСимволыДругими

Функция ТрЛит(Знач Слово)
Слово = ВРег(Слово);
Слово = ?(Лев(Слово,1) = "Е","YE"+Сред(Слово,2),Слово);
Слово=СтрЗаменить(Слово,"АЕ","AYE");
Слово=СтрЗаменить(Слово,"ЕЕ","EYE");
Пока Найти(Слово,"EЕ") > 0 Цикл
Слово = СтрЗаменить(Слово,"EЕ","EYE");
КонецЦикла;
Слово=СтрЗаменить(Слово,"ЕЁ","YEYO");
Слово=СтрЗаменить(Слово,"ЁЕ","YOYE");
Слово=СтрЗаменить(Слово,"ИЕ","IYE");
Слово=СтрЗаменить(Слово,"ОЕ","OYE");
Слово=СтрЗаменить(Слово,"УЕ","UYE");
Слово=СтрЗаменить(Слово,"ЫЕ","YYE");
Слово=СтрЗаменить(Слово,"ЭЕ","EYE");
Слово=СтрЗаменить(Слово,"ЮЕ","YUYE");
Слово=СтрЗаменить(Слово,"ЯЕ","YAYE");
Слово=СтрЗаменить(Слово,"ЬЕ","YE");
Слово=СтрЗаменить(Слово,"ЪЕ","YE");
Слово=СтрЗаменить(Слово,"Ё","YO");
Слово=СтрЗаменить(Слово,"Ж","ZH");
Слово=СтрЗаменить(Слово,"Х","KH");
Слово=СтрЗаменить(Слово,"Ц","TS");
Слово=СтрЗаменить(Слово,"Ч","CH");
Слово=СтрЗаменить(Слово,"Ш","SH");
Слово=СтрЗаменить(Слово,"Щ","CHSH");
Слово=СтрЗаменить(Слово,"Ъ","");
Слово=СтрЗаменить(Слово,"Ь","");
Слово=СтрЗаменить(Слово,"Ю","YU");
Слово=СтрЗаменить(Слово,"Я","YA");
Слово=ЗаменитьОдниСимволыДругими("АБВГДЕЗИЙКЛМНОПРСТУФЫЭ",Слово,"ABVGDEZIJKLMNOPRSTUFYE");
Возврат Слово;
КонецФункции

Пример использования функции приведен в прилагаемой обработке.

6 Comments

  1. lock73

    Для одного из банков при заказе карточек понадобилось транслитерировать имя и фамилию работника.

    Пришлось написать простенькую функцию.

    Перейти к публикации

    Reply ↓
  2. no_registration

    Прикольно. Все простое гениально.

    Reply ↓
  3. lock73

    Функция задумывалась и была написана в расчете на пословное транслитерирование. Но, если после строки

    Слово = ?(Лев(Слово,1) = «Е»,»YE»+Сред(Слово,2),Слово);

    вставить

    Слово = СтрЗаменить(Слово,» Е»,» YE»+Сред(Слово,2),Слово);

    то получим функцию для многословных конструкций. А если еще вставить и строку

    Слово = СтрЗаменить(Слово,»-Е»,»-YE»+Сред(Слово,2),Слово);

    то и для составных фамилий.

    Reply ↓
  4. NPMar

    Спасибо большое! Мне очень пригодится для передачи в банк данных о сотрудниках. Обязательно воспользуюсь. Предстоит переход из семерки на восьмерку.

    Reply ↓
  5. quebracho

    Спасибо вам. Следует также заметить, что для получения титульного регистра

    ARISTARKH ZMEYEYEDOV

    Aristarkh Zmeyeyedov

    можно воспользоваться встроенной функцией ТРег.

    Reply ↓
  6. capitan

    Для любителей копипастить я бы добавил нижний регистр

    Функция фТранслит(Знач Слово)
    //по стандарту ISO-R9-1968
    Слово = ?(Лев(Слово,1) = «Е»,»YE»+Сред(Слово,2),Слово);
    Слово = ?(Лев(Слово,1) = «е»,»ye»+Сред(Слово,2),Слово);
    Слово=СтрЗаменить(Слово,»ае»,»aye»);
    Слово=СтрЗаменить(Слово,»ее»,»eye»);
    Пока Найти(Слово,»eе») > 0 Цикл
    Слово = СтрЗаменить(Слово,»eе»,»eye»);
    КонецЦикла;
    Слово=СтрЗаменить(Слово,»её»,»yeyo»);
    Слово=СтрЗаменить(Слово,»ёе»,»yoye»);
    Слово=СтрЗаменить(Слово,»ие»,»iye»);
    Слово=СтрЗаменить(Слово,»ое»,»oye»);
    Слово=СтрЗаменить(Слово,»уе»,»uye»);
    Слово=СтрЗаменить(Слово,»ые»,»yye»);
    Слово=СтрЗаменить(Слово,»эе»,»eye»);
    Слово=СтрЗаменить(Слово,»юе»,»yuye»);
    Слово=СтрЗаменить(Слово,»яе»,»yaye»);
    Слово=СтрЗаменить(Слово,»ье»,»ye»);
    Слово=СтрЗаменить(Слово,»ъе»,»ye»);
    Слово=СтрЗаменить(Слово,»ё»,»yo»);
    Слово=СтрЗаменить(Слово,»ж»,»zh»);
    Слово=СтрЗаменить(Слово,»х»,»kh»);
    Слово=СтрЗаменить(Слово,»ц»,»ts»);
    Слово=СтрЗаменить(Слово,»ч»,»ch»);
    Слово=СтрЗаменить(Слово,»ш»,»sh»);
    Слово=СтрЗаменить(Слово,»щ»,»chsh»);
    Слово=СтрЗаменить(Слово,»ъ»,»»);
    Слово=СтрЗаменить(Слово,»ь»,»»);
    Слово=СтрЗаменить(Слово,»ю»,»yu»);
    Слово=СтрЗаменить(Слово,»я»,»ya»);
    Слово=ЗаменитьОдниСимволыДругими(«абвгдезийклмнопрстуфыэ»,Слово,»abvgdezijklmnoprstufye»);
    Слово=СтрЗаменить(Слово,»АЕ»,»AYE»);
    Слово=СтрЗаменить(Слово,»ЕЕ»,»EYE»);
    Пока Найти(Слово,»EЕ») > 0 Цикл
    Слово = СтрЗаменить(Слово,»EЕ»,»EYE»);
    КонецЦикла;
    Слово=СтрЗаменить(Слово,»ЕЁ»,»YEYO»);
    Слово=СтрЗаменить(Слово,»ЁЕ»,»YOYE»);
    Слово=СтрЗаменить(Слово,»ИЕ»,»IYE»);
    Слово=СтрЗаменить(Слово,»ОЕ»,»OYE»);
    Слово=СтрЗаменить(Слово,»УЕ»,»UYE»);
    Слово=СтрЗаменить(Слово,»ЫЕ»,»YYE»);
    Слово=СтрЗаменить(Слово,»ЭЕ»,»EYE»);
    Слово=СтрЗаменить(Слово,»ЮЕ»,»YUYE»);
    Слово=СтрЗаменить(Слово,»ЯЕ»,»YAYE»);
    Слово=СтрЗаменить(Слово,»ЬЕ»,»YE»);
    Слово=СтрЗаменить(Слово,»ЪЕ»,»YE»);
    Слово=СтрЗаменить(Слово,»Ё»,»YO»);
    Слово=СтрЗаменить(Слово,»Ж»,»ZH»);
    Слово=СтрЗаменить(Слово,»Х»,»KH»);
    Слово=СтрЗаменить(Слово,»Ц»,»TS»);
    Слово=СтрЗаменить(Слово,»Ч»,»CH»);
    Слово=СтрЗаменить(Слово,»Ш»,»SH»);
    Слово=СтрЗаменить(Слово,»Щ»,»CHSH»);
    Слово=СтрЗаменить(Слово,»Ъ»,»»);
    Слово=СтрЗаменить(Слово,»Ь»,»»);
    Слово=СтрЗаменить(Слово,»Ю»,»YU»);
    Слово=СтрЗаменить(Слово,»Я»,»YA»);
    Слово=ЗаменитьОдниСимволыДругими(«АБВГДЕЗИЙКЛМНОПРСТУФЫЭ»,Слово,»ABVGDEZIJKLMNOPRSTUFYE»);
    Возврат Слово;
    КонецФункции

    Показать

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *