Замена русских букв латинскими аналогами
У кого какие идеи по данному поводу. В интернете нарыл только два предложения:
1. Воспользоваться встроенной функцией СтрЗаменить
Переменная1=StrReplace(Переменная1, "а","a");
Переменная1=StrReplace(Переменная1, "б","b");
Переменная1=StrReplace(Переменная1, "в","v");
Переменная1=StrReplace(Переменная1, "г","g");
Переменная1=StrReplace(Переменная1, "д","d");
Переменная1=StrReplace(Переменная1, "е","e");
Переменная1=StrReplace(Переменная1, "ё","ye");
Переменная1=StrReplace(Переменная1, "ж","zh");
2. Второе, создать регистр сведений и забить туда эти соответствия. При поиске преобразовать согласно соответствию в этом справочнике
1. Воспользоваться встроенной функцией СтрЗаменить
Переменная1=StrReplace(Переменная1, "а","a");
Переменная1=StrReplace(Переменная1, "б","b");
Переменная1=StrReplace(Переменная1, "в","v");
Переменная1=StrReplace(Переменная1, "г","g");
Переменная1=StrReplace(Переменная1, "д","d");
Переменная1=StrReplace(Переменная1, "е","e");
Переменная1=StrReplace(Переменная1, "ё","ye");
Переменная1=StrReplace(Переменная1, "ж","zh");
2. Второе, создать регистр сведений и забить туда эти соответствия. При поиске преобразовать согласно соответствию в этом справочнике
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
вот здесь таблица транслитерации по ГОСТ
http://transliteration.ru/gost/
регистр сведений создавать из-за такой ерунды не стоит по-моему
регистр сведений создавать из-за такой ерунды не стоит по-моему
Встречал такой код по преобразованию строки с русского на латиницу:
Процедура КнопкаВыполнитьНажатие(Кнопка)
СтрокаВыход = Транслит(СтрокаВход);
КонецПроцедуры
Функция Транслит(Вход)
Русский = "абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШ ЩЬЫЪЭЮЯ";
Англ = "a;b;v;g;d;e;yo;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;Yo;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);
Позиция = Найти(Русский,ТекущийСимвол);
Если Позиция > 0 Тогда
Выход = Выход + МассивАнгл[Позиция-1];
Иначе
Выход = Выход + ТекущийСимвол;
КонецЕсли;
КонецЦикла;
Возврат Выход;
КонецФункции
Функция _РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
МассивСтрок = Новый Массив();
Если Разделитель = " " Тогда
Стр = СокрЛП(Стр);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина(Разделитель);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
МассивСтрок.Добавить(Стр);
Возврат МассивСтрок;
КонецЕсли;
МассивСтрок.Добавить(Лев(Стр,Поз-1));
Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла;
КонецЕсли;
КонецФункции
Показать
Решал похожую задачу, остановился на СтрЗаменить().
Всех бед не решает, сам по себе английский язык сложен нет однозначных соответствий да и кроме английского есть и другие языки с латиницей. В моем случае были названия на английском и испанском языках, в половине случаев пришлось руками перевод доводить.
Вот текст
Всех бед не решает, сам по себе английский язык сложен нет однозначных соответствий да и кроме английского есть и другие языки с латиницей. В моем случае были названия на английском и испанском языках, в половине случаев пришлось руками перевод доводить.
Вот текст
Функция Руссифицировать(КЗамене)
КЗамене=СтрЗаменить(КЗамене,"Sh","Ш");
КЗамене=СтрЗаменить(КЗамене,"sh","ш");
КЗамене=СтрЗаменить(КЗамене,"Cp","Ч");
КЗамене=СтрЗаменить(КЗамене,"cp","ч");
КЗамене=СтрЗаменить(КЗамене,"Sp","Ф");
КЗамене=СтрЗаменить(КЗамене,"sp","ф");
//КЗамене=СтрЗаменить(КЗамене,"Er","Ё");
//КЗамене=СтрЗаменить(КЗамене,"er","ё");
КЗамене=СтрЗаменить(КЗамене,"Ee","И");
КЗамене=СтрЗаменить(КЗамене,"ee","и");
КЗамене=СтрЗаменить(КЗамене,"Oo","У");
КЗамене=СтрЗаменить(КЗамене,"oo","у");
КЗамене=СтрЗаменить(КЗамене,"A","А");
КЗамене=СтрЗаменить(КЗамене,"a","а");
КЗамене=СтрЗаменить(КЗамене,"B","Б");
КЗамене=СтрЗаменить(КЗамене,"b","б");
КЗамене=СтрЗаменить(КЗамене,"Q","К");
КЗамене=СтрЗаменить(КЗамене,"q","к");
КЗамене=СтрЗаменить(КЗамене,"W","В");
КЗамене=СтрЗаменить(КЗамене,"w","в");
КЗамене=СтрЗаменить(КЗамене,"E","Э");
КЗамене=СтрЗаменить(КЗамене,"e","э");
КЗамене=СтрЗаменить(КЗамене,"R","Р");
КЗамене=СтрЗаменить(КЗамене,"r","р");
КЗамене=СтрЗаменить(КЗамене,"T","Т");
КЗамене=СтрЗаменить(КЗамене,"t","т");
КЗамене=СтрЗаменить(КЗамене,"Y","И");
КЗамене=СтрЗаменить(КЗамене,"y","и");
КЗамене=СтрЗаменить(КЗамене,"U","У");
КЗамене=СтрЗаменить(КЗамене,"u","у");
КЗамене=СтрЗаменить(КЗамене,"I","И");
КЗамене=СтрЗаменить(КЗамене,"i","и");
КЗамене=СтрЗаменить(КЗамене,"O","О");
КЗамене=СтрЗаменить(КЗамене,"o","о");
КЗамене=СтрЗаменить(КЗамене,"P","П");
КЗамене=СтрЗаменить(КЗамене,"p","п");
КЗамене=СтрЗаменить(КЗамене,"S","С");
КЗамене=СтрЗаменить(КЗамене,"s","с");
КЗамене=СтрЗаменить(КЗамене,"D","Д");
КЗамене=СтрЗаменить(КЗамене,"d","д");
КЗамене=СтрЗаменить(КЗамене,"F","Ф");
КЗамене=СтрЗаменить(КЗамене,"f","ф");
КЗамене=СтрЗаменить(КЗамене,"G","Г");
КЗамене=СтрЗаменить(КЗамене,"g","г");
КЗамене=СтрЗаменить(КЗамене,"H","Х");
КЗамене=СтрЗаменить(КЗамене,"h","х");
КЗамене=СтрЗаменить(КЗамене,"J","Дж");
КЗамене=СтрЗаменить(КЗамене,"j","дж");
КЗамене=СтрЗаменить(КЗамене,"K","К");
КЗамене=СтрЗаменить(КЗамене,"k","к");
КЗамене=СтрЗаменить(КЗамене,"L","Л");
КЗамене=СтрЗаменить(КЗамене,"l","л");
КЗамене=СтрЗаменить(КЗамене,"Z","З");
КЗамене=СтрЗаменить(КЗамене,"z","з");
КЗамене=СтрЗаменить(КЗамене,"X","Кс");
КЗамене=СтрЗаменить(КЗамене,"x","кс");
КЗамене=СтрЗаменить(КЗамене,"C","К");
КЗамене=СтрЗаменить(КЗамене,"c","к");
КЗамене=СтрЗаменить(КЗамене,"V","В");
КЗамене=СтрЗаменить(КЗамене,"v","в");
КЗамене=СтрЗаменить(КЗамене,"N","Н");
КЗамене=СтрЗаменить(КЗамене,"n","н");
КЗамене=СтрЗаменить(КЗамене,"M","М");
КЗамене=СтрЗаменить(КЗамене,"m","м");
Возврат КЗамене;
КонецФункции
Показать
Как полученные результаты на русском и на английском одновременно задать в значение отбора в форме выбора справочника?
Спр.Отбор.ВидСравнения = ВидСравнения.Содержит;
Спр.Отбор.Значение = ???
Спр.Отбор.ВидСравнения = ВидСравнения.Содержит;
Спр.Отбор.Значение = ???
Простая функцию транслитерации:
Функция ЗаменитьОдниСимволыДругими(Что,Где,НаЧто) Экспорт
Рез = Где;
Для Сч = 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");
Возврат Слово;
КонецФункции
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот