Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2014, 00:51
Новичок на форуме
Отправить личное сообщение для lodkin Посмотреть профиль Найти все сообщения от lodkin
 
Регистрация: 25.03.2014
Сообщений: 5

транслитератор. кажется сразу надо было сюда
добрый день. вобщем, проблема вот в чем:
транслитератор на vbscript, работает только в браузере IE, хочется переписать его на js. язык абхазский, 64 буквы. алгоритм такой:

1. создаются массивы для транслитерации из латиницы в кириллицу

а. сочетания из четырех символов
б. сочетания из трех символов
в. сочетания из двух символов
г. один символ

создаются массивы для транслитерации из кириллицы в латиницу
а. сочетания из трех символов
б. сочетания из двух символов
в. один символ

2. скрипт ищет сначала сочетания а, потом б, и, когда сочетаний не остается, транслирует уже одиночные символы

транслитератор делали оч давно, в эпоху IE6.. язык абхазский. сам не программер. тогда помню с большим рудом добился корректной работы именно на vbs, а js транслитерировал некорректно

спасибо за внимание, подсказки, корректировку, вижу что форум живой
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2014, 09:43
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

А что собственно корректировать тут? Ну кроме как грамматические ошибки - но тут я не могу ни чем помочь, сам не мастер. Это на какой нибудь форум русского языка.

А вот подсказку дать могу - тут могут помочь с конкретным вопросом,а не написать за тебя.
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2014, 12:40
Новичок на форуме
Отправить личное сообщение для lodkin Посмотреть профиль Найти все сообщения от lodkin
 
Регистрация: 25.03.2014
Сообщений: 5

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

далее массивы
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2014, 12:41
Новичок на форуме
Отправить личное сообщение для lodkin Посмотреть профиль Найти все сообщения от lodkin
 
Регистрация: 25.03.2014
Сообщений: 5

я смог додуматься только до вот такого, но он транслирует посимвольно, не учитывает сочтания

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('') ;
}
}
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2014, 13:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

lodkin,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

вопрос почему в одном случае массивов 4 а обратно 3?
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2014, 13:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

lodkin,
алгоритм тотже самый брать следующий элемент массива пока он есть -- перезаписывать все совпадения в строке - переходить к следующему массиву и также - разбивать строку нет необходимости

Последний раз редактировалось рони, 25.03.2014 в 13:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск