Функция 1с которая преобразует Кириллицу в Латиницу (и обратно)

Функция 1с которая преобразует Кириллицу в Латиницу (и обратно)

Простая функция 1с которая превращает Кириллицу в Латиницу (и обратно Латиницу в Кириллицу).


Функция Транслит(СтрокаВход, Реверс = Ложь)

ВыходСтрока= "";
AZ_3 = Новый Соответствие; // три символа (сочетание)
AZ_2 = Новый Соответствие; // два символа (сочетание)
AZ_1 = Новый Соответствие; // один символ

AZ_3.Вставить(?(Реверс=Ложь,"щ","sch"),?(Реверс=Истина,"щ","sch"));
AZ_2.Вставить(?(Реверс=Ложь,"є","je"),?(Реверс=Истина,"є","je"));
AZ_2.Вставить(?(Реверс=Ложь,"ю","ju"),?(Реверс=Истина,"ю","ju"));
AZ_2.Вставить(?(Реверс=Ложь,"я","ya"),?(Реверс=Истина,"я","ya"));
AZ_2.Вставить(?(Реверс=Ложь,"ж","zh"),?(Реверс=Истина,"ж","zh"));
AZ_2.Вставить(?(Реверс=Ложь,"ч","ch"),?(Реверс=Истина,"ч","ch"));
AZ_2.Вставить(?(Реверс=Ложь,"ш","sh"),?(Реверс=Истина,"ш","sh"));
AZ_1.Вставить(?(Реверс=Ложь,"ї","yi"),?(Реверс=Истина,"ї","yi"));
AZ_1.Вставить(?(Реверс=Ложь,"а","a"),?(Реверс=Истина,"а","a"));
AZ_1.Вставить(?(Реверс=Ложь,"б","b"),?(Реверс=Истина,"б","b"));
AZ_1.Вставить(?(Реверс=Ложь,"в","v"),?(Реверс=Истина,"в","v"));
AZ_1.Вставить(?(Реверс=Ложь,"г","g"),?(Реверс=Истина,"г","g"));
AZ_1.Вставить(?(Реверс=Ложь,"д","d"),?(Реверс=Истина,"д","d"));
AZ_1.Вставить(?(Реверс=Ложь,"е","e"),?(Реверс=Истина,"е","e"));
AZ_1.Вставить(?(Реверс=Ложь,"з","z"),?(Реверс=Истина,"з","z"));
AZ_1.Вставить(?(Реверс=Ложь,"и","i"),?(Реверс=Истина,"и","i"));
AZ_1.Вставить(?(Реверс=Ложь,"й","j"),?(Реверс=Истина,"й","j"));
AZ_1.Вставить(?(Реверс=Ложь,"к","k"),?(Реверс=Истина,"к","k"));
AZ_1.Вставить(?(Реверс=Ложь,"л","l"),?(Реверс=Истина,"л","l"));
AZ_1.Вставить(?(Реверс=Ложь,"м","m"),?(Реверс=Истина,"м","m"));
AZ_1.Вставить(?(Реверс=Ложь,"н","n"),?(Реверс=Истина,"н","n"));
AZ_1.Вставить(?(Реверс=Ложь,"о","o"),?(Реверс=Истина,"о","o"));
AZ_1.Вставить(?(Реверс=Ложь,"п","p"),?(Реверс=Истина,"п","p"));
AZ_1.Вставить(?(Реверс=Ложь,"р","r"),?(Реверс=Истина,"р","r"));
AZ_1.Вставить(?(Реверс=Ложь,"с","s"),?(Реверс=Истина,"с","s"));
AZ_1.Вставить(?(Реверс=Ложь,"т","t"),?(Реверс=Истина,"т","t"));
AZ_1.Вставить(?(Реверс=Ложь,"у","u"),?(Реверс=Истина,"у","u"));
AZ_1.Вставить(?(Реверс=Ложь,"ф","f"),?(Реверс=Истина,"ф","f"));
AZ_1.Вставить(?(Реверс=Ложь,"х","h"),?(Реверс=Истина,"х","h"));
AZ_1.Вставить(?(Реверс=Ложь,"ц","c"),?(Реверс=Истина,"ц","c"));
AZ_1.Вставить(?(Реверс=Ложь,"і","i"),?(Реверс=Истина,"і","i"));
AZ_1.Вставить(?(Реверс=Ложь,"ґ",""),?(Реверс=Истина,"ґ",""));
AZ_1.Вставить(?(Реверс=Ложь,"ь",""),?(Реверс=Истина,"ь",""));
AZ_1.Вставить(?(Реверс=Ложь," ","_"),?(Реверс=Истина," ","_"));

Для Сч=1 По СтрДлина(СтрокаВход) Цикл

ТекСимволСтроки = НРЕГ(Сред(СтрокаВход,Сч,3));
НайденныйСимвол = AZ_3.Получить(ТекСимволСтроки);
Если НайденныйСимвол = Неопределено Тогда
ТекСимволСтроки = НРЕГ(Сред(СтрокаВход,Сч,2));
НайденныйСимвол = AZ_2.Получить(ТекСимволСтроки);
Если НайденныйСимвол = Неопределено Тогда
ТекСимволСтроки = НРЕГ(Сред(СтрокаВход,Сч,1));
НайденныйСимвол = AZ_1.Получить(ТекСимволСтроки);
Если НайденныйСимвол = Неопределено Тогда
ТекСимволСтроки = НРЕГ(Сред(СтрокаВход,Сч,1));
НайденныйСимвол = AZ_3.Получить(ТекСимволСтроки);
Если НайденныйСимвол = Неопределено Тогда
ТекСимволСтроки = НРЕГ(Сред(СтрокаВход,Сч,1));
НайденныйСимвол = AZ_2.Получить(ТекСимволСтроки);
КонецЕсли;
КонецЕсли;
Иначе
Сч=Сч+1
КонецЕсли;
Иначе
Сч=Сч+2
КонецЕсли;

Если НайденныйСимвол <> Неопределено Тогда
СимволВСтроку = НайденныйСимвол;
Иначе
СимволВСтроку = Сред(СтрокаВход,Сч,1);
КонецЕсли;

ВыходСтрока = ВыходСтрока + СимволВСтроку;
КонецЦикла;

Возврат ВыходСтрока;

КонецФункции



Теги:   


2024-05-24




Выбрать язык:
-  руский
-  Українська