Автор | Сообщение |
|
| постоянный участник
|
Пост N: 976
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.12.09 18:34. Заголовок: Есть ли функция транслита ?
Всем привет ! Подскажите, есть ли в Харборе функция перевода с русского на транслит ? Может кто написал ? Или подскажите как можно сделать самому ! Только не надо советовать, что руками делать... Важна сама идея !
|
|
|
Ответов - 11
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 02.12.09 21:41. Заголовок: FUNCTION repl_lat(le..
FUNCTION repl_lat(letter) // замена русских букв латинскими согласно клавиатуре * cSearchFor := "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ?йцукенгшщзхъфывапролджэячсмитьбю/" cReplaceExp := "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./" letter1 := CharRepl(cSearchFor, letter, cReplaceExp) return (letter1)
|
|
|
|
| постоянный участник
|
Пост N: 218
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.12.09 22:35. Заголовок: Ну, к примеру, два м..
Ну, к примеру, двумерный массив: { { "А", "A" }, { "Б", "B" }, { "В", "V" },.... { "Ж", "ZH" }, ... } Ищем по первому эелементу, берем второй. А вот обратно, с латинского на русский, чуть сложнее. Надо анализировать сочетания, например: "ZH" - "Ж", а не "З" и "Х" и т.д. Вот интересный сайтик: http://www.translit.ru/
|
|
|
|
| постоянный участник
|
Пост N: 977
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.09 00:25. Заголовок: Не совсем то.... Мн..
Не совсем то.... Мне нужно имена файлов перевести в транслит. Например: Железнодорожный Kировский Свердловский Центральный Советский и др. ....
|
|
|
|
| постоянный участник
|
Пост N: 219
Зарегистрирован: 27.01.07
|
|
Отправлено: 03.12.09 09:16. Заголовок: Имхо, не важно, что ..
Имхо, не важно, что переводить.
|
|
|
|
| постоянный участник
|
Пост N: 1878
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.09.11 19:39. Заголовок: Сделал функцию, може..
Сделал функцию, может кому пригодиться: /////////////////////////////////////////////////////////////////////////////////// // Функция для перевода русского текста в транслит. [x]Harbour FUNCTION MyTranslit(cStr) LOCAL nI, cStr1, cStr2, aStr1, aStr2 // Сначала заменяем "односимвольные" фонемы. cStr1 := "АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЬЫЭабвгдеёзийклмнопрстуфхъьыэ" cStr2 := "ABVGDEEZIYKLMNOPRSTUFH''IEabvgdeeziyklmnoprstufh''ie" cStr := CharRepl(cStr1,cStr,cStr2,.T.) // Затем - "многосимвольные". aStr1 := { "ж", "ц", "ч", "ш", "щ", "ю", "я", "Ж", "Ц", "Ч", "Ш", "Щ", "Ю", "Я","ї", "Ї", "є", "Є" } aStr2 := {"zh","ts","ch","sh","sch","yu","ya","ZH","TS","CH","SH","SCH","YU","YA","i","Yi","ie","Ye" } FOR nI := 1 TO LEN(aStr1) cStr := CharRepl(aStr1[nI],cStr,aStr2[nI],.T.) NEXT RETURN cStr
|
|
|
|
| |
Пост N: 2119
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.09.11 21:34. Заголовок: Andrey пишет: Или п..
Andrey пишет: цитата: | Или подскажите как можно сделать самому |
| Andrey пишет: цитата: | Сделал функцию, может кому пригодиться: |
| Вот и молодец
|
|
|
|
| постоянный участник
|
Пост N: 1879
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.09.11 22:18. Заголовок: Dima пишет: Вот и м..
Dima пишет: Не прошло и года.... Отправлено: 02.12.09 - Сделано: 06.09.11
|
|
|
|
| |
Пост N: 5519
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.03.16 16:24. Заголовок: Andrey пишет: FOR n..
Andrey пишет: цитата: | FOR nI := 1 TO LEN(aStr1) cStr := CharRepl(aStr1[nI],cStr,aStr2[nI],.T.) NEXT |
| Тут CharRepl не верно сработает. Заменить надо на cStr:=Strtran(Cstr,aStr1[nI],aStr2[nI])
|
|
|
|
| |
Пост N: 177
Зарегистрирован: 21.04.13
|
|
Отправлено: 14.03.16 18:21. Заголовок: Транлит - стандартизован
|
|
|
|
| постоянный участник
|
Пост N: 4787
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.16 18:44. Заголовок: petr707 пишет: Тра..
petr707 пишет: цитата: | Транлит - стандартизован, можно выбрать таблицу |
| А в Харборе его нет !
|
|
|
|
| |
Пост N: 178
Зарегистрирован: 21.04.13
|
|
Отправлено: 14.03.16 22:36. Заголовок: Сложность в том, что стандартов - не один, а несколько!
Все таки - рекомендую посетить Википедию - информацию к размышлению "Можно выбрать.." означает, что.. нет единственного решения и придется.. выбирать
|
|
|
|