gifts2017

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

Опубликовал А В (lock73) в раздел Программирование - Практика программирования

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

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

Пришлось провести исследования и написать простенькую функцию транслитерации почти :) по стандарту 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");
    Возврат Слово;
КонецФункции



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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Тест функции транслитерации имен и фамилий
.epf 8,49Kb
03.08.12
27
.epf 8,49Kb 27 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

0. А В (lock73) 03.08.12 11:27
Для одного из банков при заказе карточек понадобилось транслитерировать имя и фамилию работника.
Пришлось написать простенькую функцию.


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

1. no_registration no_registration (no_registration) 03.08.12 17:07
Прикольно. Все простое гениально.
2. А В (lock73) 06.08.12 07:24
Функция задумывалась и была написана в расчете на пословное транслитерирование. Но, если после строки
Слово = ?(Лев(Слово,1) = "Е","YE"+Сред(Слово,2),Слово);
вставить
Слово = СтрЗаменить(Слово," Е"," YE"+Сред(Слово,2),Слово);
то получим функцию для многословных конструкций. А если еще вставить и строку
Слово = СтрЗаменить(Слово,"-Е","-YE"+Сред(Слово,2),Слово);
то и для составных фамилий.
3. NPMar (NPMar) 08.08.12 11:51
Спасибо большое! Мне очень пригодится для передачи в банк данных о сотрудниках. Обязательно воспользуюсь. Предстоит переход из семерки на восьмерку.
4. qwe qwerty (quebracho) 13.12.12 09:09
Спасибо вам. Следует также заметить, что для получения титульного регистра
ARISTARKH ZMEYEYEDOV
Aristarkh Zmeyeyedov
можно воспользоваться встроенной функцией ТРег.
prodines; +1 Ответить
5. Капитан Немо (capitan) 27.03.15 16:28
Для любителей копипастить я бы добавил нижний регистр

Функция фТранслит(Знач Слово)
	//по стандарту 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");
	Возврат Слово;
КонецФункции
...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа