Функція 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





Вибрати мову:
-  руский
-  Українська