транслитератор. кажется сразу надо было сюда
добрый день. вобщем, проблема вот в чем:
транслитератор на vbscript, работает только в браузере IE, хочется переписать его на js. язык абхазский, 64 буквы. алгоритм такой: 1. создаются массивы для транслитерации из латиницы в кириллицу а. сочетания из четырех символов б. сочетания из трех символов в. сочетания из двух символов г. один символ создаются массивы для транслитерации из кириллицы в латиницу а. сочетания из трех символов б. сочетания из двух символов в. один символ 2. скрипт ищет сначала сочетания а, потом б, и, когда сочетаний не остается, транслирует уже одиночные символы транслитератор делали оч давно, в эпоху IE6.. язык абхазский. сам не программер. тогда помню с большим рудом добился корректной работы именно на vbs, а js транслитерировал некорректно спасибо за внимание, подсказки, корректировку, вижу что форум живой |
А что собственно корректировать тут? Ну кроме как грамматические ошибки - но тут я не могу ни чем помочь, сам не мастер. Это на какой нибудь форум русского языка.
А вот подсказку дать могу - тут могут помочь с конкретным вопросом,а не написать за тебя. |
http://www.codeguru.com.ua/article/a-183.html
Виды процедур В VBScript существует два вида процедур: подпрограмма (Sub) и функция (Function) код транслитератора такой: ' VBScript File Sub clickMutateVB() Document.getElementById("e").Value = MutateVB(Document.getElementById("e").Value, Document.getElementById("from").Value + Document.getElementById("to").Value) End Sub Function MutateVB(str, flag) 'Латиница в кириллицу(Unicode) if flag = 301 OR flag = 401 then for l = 0 to UBound(lattoc4) str = Replace(str,lattoc4(l), ltocir4(l)) next for l = 0 to UBound(lattoc3) str = Replace(str,lattoc3(l), ltocir3(l)) next for l = 0 to UBound(lattoc2) str = Replace(str,lattoc2(l), ltocir2(l)) next for l = 0 to UBound(lattoc1) str = Replace(str,lattoc1(l), ltocir1(l)) next end if 'Кириллица(Unicode) в латиницу if flag = 103 OR flag = 104 then for l = 0 to UBound(cirtol4) str = Replace(str,cirtol4(l), ctolat4(l)) next for l = 0 to UBound(lattoc3) str = Replace(str,cirtol3(l), ctolat3(l)) next for l = 0 to UBound(lattoc2) str = Replace(str,cirtol2(l), ctolat2(l)) next for l = 0 to UBound(lattoc1) str = Replace(str,cirtol1(l), ctolat1(l)) next end if далее массивы |
я смог додуматься только до вот такого, но он транслирует посимвольно, не учитывает сочтания
function cirTolat(text) { var a = document.getElementById('area'); if(a) { var let = a.value.split(''); for(var j = 0; j < let.length; j++) { if(let[j] != ' ') { for(var i = 0; i < cirilica.length; i++) { if(let[j] == cirilica[i]) { let[j] = latinica[i]; } } } } document.getElementById('area2').value=let.join('' ); } } function latTocir() { var a = document.getElementById('area2'); if(a) { var let = a.value.split(''); for(var j = 0; j < let.length; j++) { if(let[j] != ' ') { for(var i = 0; i < latinica.length; i++) { if(let[j] == latinica[i]) { let[j] = cirilica[i]; } } } } document.getElementById('area').value=let.join('') ; } } |
lodkin,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. вопрос почему в одном случае массивов 4 а обратно 3? |
lodkin,
алгоритм тотже самый брать следующий элемент массива пока он есть -- перезаписывать все совпадения в строке - переходить к следующему массиву и также - разбивать строку нет необходимости |
Часовой пояс GMT +3, время: 11:19. |