- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
Функция Транслит(Имя)
Рез = СокрЛП(Имя);
Рез = СтрЗаменить(Рез,"а","a");
Рез = СтрЗаменить(Рез,"б","b");
Рез = СтрЗаменить(Рез,"в","v");
Рез = СтрЗаменить(Рез,"г","g");
Рез = СтрЗаменить(Рез,"д","d");
Рез = СтрЗаменить(Рез,"е","e");
Рез = СтрЗаменить(Рез,"ё","jo");
Рез = СтрЗаменить(Рез,"ж","zh");
Рез = СтрЗаменить(Рез,"з","z");
Рез = СтрЗаменить(Рез,"и","i");
Рез = СтрЗаменить(Рез,"й","jj");
Рез = СтрЗаменить(Рез,"к","k");
Рез = СтрЗаменить(Рез,"л","l");
Рез = СтрЗаменить(Рез,"м","m");
Рез = СтрЗаменить(Рез,"н","n");
Рез = СтрЗаменить(Рез,"о","o");
Рез = СтрЗаменить(Рез,"п","p");
Рез = СтрЗаменить(Рез,"р","r");
Рез = СтрЗаменить(Рез,"с","s");
Рез = СтрЗаменить(Рез,"т","t");
Рез = СтрЗаменить(Рез,"у","u");
Рез = СтрЗаменить(Рез,"ф","f");
Рез = СтрЗаменить(Рез,"х","h");
Рез = СтрЗаменить(Рез,"ч","ch");
Рез = СтрЗаменить(Рез,"ш","sh");
Рез = СтрЗаменить(Рез,"щ","shh");
Рез = СтрЗаменить(Рез,"ъ","");
Рез = СтрЗаменить(Рез,"ь","");
Рез = СтрЗаменить(Рез,"э","eh");
Рез = СтрЗаменить(Рез,"ю","ju");
Рез = СтрЗаменить(Рез,"ц","c");
Рез = СтрЗаменить(Рез,"я","ja");
Рез = СтрЗаменить(Рез,"ы","i");
Рез = СтрЗаменить(Рез,"А","A");
Рез = СтрЗаменить(Рез,"Б","B");
Рез = СтрЗаменить(Рез,"В","V");
Рез = СтрЗаменить(Рез,"Г","G");
Рез = СтрЗаменить(Рез,"Д","D");
Рез = СтрЗаменить(Рез,"Е","E");
Рез = СтрЗаменить(Рез,"Ё","JO");
Рез = СтрЗаменить(Рез,"Ж","ZH");
Рез = СтрЗаменить(Рез,"З","Z");
Рез = СтрЗаменить(Рез,"И","I");
Рез = СтрЗаменить(Рез,"Й","JJ");
Рез = СтрЗаменить(Рез,"К","K");
Рез = СтрЗаменить(Рез,"Л","L");
Рез = СтрЗаменить(Рез,"М","M");
Рез = СтрЗаменить(Рез,"Н","N");
Рез = СтрЗаменить(Рез,"О","O");
Рез = СтрЗаменить(Рез,"П","P");
Рез = СтрЗаменить(Рез,"Р","R");
Рез = СтрЗаменить(Рез,"С","S");
Рез = СтрЗаменить(Рез,"Т","T");
Рез = СтрЗаменить(Рез,"У","U");
Рез = СтрЗаменить(Рез,"Ф","F");
Рез = СтрЗаменить(Рез,"Х","H");
Рез = СтрЗаменить(Рез,"Ч","CH");
Рез = СтрЗаменить(Рез,"Ш","SH");
Рез = СтрЗаменить(Рез,"Щ","SHH");
Рез = СтрЗаменить(Рез,"Ъ","");
Рез = СтрЗаменить(Рез,"Ь","");
Рез = СтрЗаменить(Рез,"Ы","");
Рез = СтрЗаменить(Рез,"Ц","C");
Рез = СтрЗаменить(Рез,"Э","EH");
Рез = СтрЗаменить(Рез,"Ю","JU");
Рез = СтрЗаменить(Рез,"Я","JA");
Возврат(Рез);
КонецФункции
Суровая транслитерация... Я плакалъ
bormand, забывший дома пароль
ех )))
И "Ц","C" почему-то не на месте.
Впрочем, для задачи (см. комментарий снизу) это, скорей всего, не особо важно, лишь бы примерно понятно было и имена уникальные. А имена, хех, могут быть и не уникальные: ЦХ == Ч.
1. Формируется имя файла на основании параметров "Наименование склада", "Наименование еще чего-то"
2. Полученное имя НЕ должно содержать русских символов (иначе некая софтина, обрабатывающие эти файлы не сможет их прочесть).
Поэтому "специалисту" было дано задание написать функцию транслитерации. Результат "на рукалицо"
Нечто подобное было на PHP, и не раз. Что доказывает, что все идиоты думают одинаково.
> "Ъ",""
> "Ь",""
> "Ы",""
А вот это - не труЪ.
> "jo"
А вот это забавно.
<code>
//функция выполняет транслитерацию исходного текста на англ.язык
//
Функция ВыполнитьТранслитерацию(ИсходныйТекст) Экспорт
ТекстВозврата = "";
ДлинаИсходногоТекста = СтрДлина(ИсходныйТекст);
Для Сч = 1 По ДлинаИсходногоТекста Цикл
текСимвол = Сред(ИсходныйТекст, Сч, 1);
возврСимвол = ОпределитьСимволВозврата(текСимвол);
ТекстВозврата = ТекстВозврата + возврСимвол;
КонецЦикла;
Возврат ТекстВозврата;
КонецФункции
</code>
Замеры скорости не производили, но это и так очевидно.
<code>
Функция ОпределитьСимволВозврата(текСимвол)
возврСимвол = "";
//гласные
Если текСимвол = "а" Тогда
возврСимвол = "a";
ИначеЕсли текСимвол = "е" Тогда
возврСимвол = "e";
ИначеЕсли текСимвол = "ё" Тогда
возврСимвол = "yo";
ИначеЕсли текСимвол = "и" Тогда
возврСимвол = "i";
ИначеЕсли текСимвол = "о" Тогда
возврСимвол = "o";
ИначеЕсли текСимвол = "у" Тогда
возврСимвол = "u";
ИначеЕсли текСимвол = "э" Тогда
возврСимвол = "e";
ИначеЕсли текСимвол = "ю" Тогда
возврСимвол = "yu";
ИначеЕсли текСимвол = "я" Тогда
возврСимвол = "ya";
ИначеЕсли текСимвол = "ы" Тогда
возврСимвол = "y";
//согласные
ИначеЕсли текСимвол = "б" Тогда
возврСимвол = "b";
ИначеЕсли текСимвол = "в" Тогда
возврСимвол = "v";
ИначеЕсли текСимвол = "г" Тогда
возврСимвол = "g";
ИначеЕсли текСимвол = "д" Тогда
возврСимвол = "d";
ИначеЕсли текСимвол = "ж" Тогда
возврСимвол = "zh";
ИначеЕсли текСимвол = "з" Тогда
возврСимвол = "z";
ИначеЕсли текСимвол = "й" Тогда
возврСимвол = "j";
ИначеЕсли текСимвол = "к" Тогда
возврСимвол = "k";
ИначеЕсли текСимвол = "л" Тогда
возврСимвол = "l";
ИначеЕсли текСимвол = "м" Тогда
возврСимвол = "m";
ИначеЕсли текСимвол = "н" Тогда
возврСимвол = "n";
ИначеЕсли текСимвол = "п" Тогда
возврСимвол = "p";
ИначеЕсли текСимвол = "р" Тогда
возврСимвол = "r";
ИначеЕсли текСимвол = "с" Тогда
возврСимвол = "s";
ИначеЕсли текСимвол = "т" Тогда
возврСимвол = "t";
ИначеЕсли текСимвол = "ф" Тогда
возврСимвол = "f";
ИначеЕсли текСимвол = "х" Тогда
возврСимвол = "kh";
ИначеЕсли текСимвол = "ц" Тогда
возврСимвол = "ts";
ИначеЕсли текСимвол = "ч" Тогда
возврСимвол = "ch";
ИначеЕсли текСимвол = "ш" Тогда
возврСимвол = "sh";
ИначеЕсли текСимвол = "щ" Тогда
возврСимвол = "sh";
ИначеЕсли текСимвол = "ъ" Тогда
возврСимвол = "";
ИначеЕсли текСимвол = "ь" Тогда
возврСимвол = "";
КонецФункции
</code>