Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация кирилици в латиницу 
:(
    Опции темы
Dima85
Дата 29.10.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Сейчас я это делаю так:
Код

function convert() {
  var a = new
  Array('ё', 'ж', 'ч', 'э', 'ю', 'я', 'й', 'г', 'ф', 'о', 'т', 'ц', 'ш', 'ы', 'л', 'ь', 'у', 'щ', 'в', 'д', 'с', 'к', 'з', 'а', 'м', 'е', 'х', 'п', 'и', 'н', 'р', 'б', 'ъ', 'ь')
  var b = new
  Array('jo', 'zh', '4', 'je', 'ju', 'ja', 'j', 'g', 'f', 'o', 't', 'c', '6', 'y', 'l', 'j', 'u', 'w', 'v', 'd', 's', 'k', 'z', 'a', 'm', 'e', 'x', 'p', 'i', 'n', 'r', 'b', '#', '\'')
  var x = document.forms['ffr'].text.value
  for (i = 0; i < a.length; i++) {
    y = eval('/' + a[i] + '/ig')
    x = x.replace(y, b[i])
  }
  document.form.text.value = x
}


Возможно ли как-то облегчить код?
И помогите пожалуйста внедрить конвертирование больших букв.

Это сообщение отредактировал(а) Dima85 - 29.10.2010, 11:08
PM MAIL   Вверх
MaxTex
Дата 29.10.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 29.10.2010
Где: Орел

Репутация: нет
Всего: нет



Зачем облегчать код?
А чтобы внедрить конвертирование прописных букв, их просто нужно добавить к спискам строчных в соответствующие массивы.
PM MAIL WWW   Вверх
Dima85
Дата 29.10.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Если я в конец добавляю большие буквы. В Firefox все работает но в Opere нет, он большие буквы конвертирует в маленькие, расскажите пожалуйста из за чего это?
PM MAIL   Вверх
ksnk
Дата 29.10.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Зачем облегчать код, если его можно усложнить  smile 
Код

<script type="text/javascript">

    function translit(str,$enru){
        var store={},currentTAG=1;
   // заменяем все теги и записываем их в массив
        str = str.replace(/<script.*?\/script>|<style.*\/style>|<.*?>/ig,function(e){
            if(!store[e]) 
                store[e]=currentTAG++;
            return '@@'+store[e]+'@@';
        });
   //транслитерируем   
        var $from=translit.map_ru,$to=translit.map_en;
        if(!$enru){
           $from=translit.map_en;$to=translit.map_ru;
        };
        for (i = 0; i < $from.length; i++) {
            var exp = new RegExp($from[i],'gm');
            str = str.replace(exp, $to[i]);
        };
        
        return str.replace(/@@(\d+)@@/g,function(e,e1){
            for(a in store){ if (store[a]==e1) return a;}
            return null;
        });
   
    };
    translit.map_en = ['Cx','S`H','s`Х','sh`','Sh`','SH`',"'o",'yo',"'O",'Yo','YO','zh','w','Zh','ZH','W'
     ,'ch','Ch','CH','sh','Sh','SH','e`','E`',"'u",'yu',"'U",'Yu',"YU","'a",'ya',"'A",'Ya','YA'
     ,'a','A','b','B','v','V','g','G','d','D','e','E','z','Z','i','I','j','J','k','K','l','L','m','M','n','N','o','O'
     ,'p','P','r','R','s','S','t','T','u','U','f','F','h','H','c','C','`','y','Y',"'"];
    translit.map_ru = [('Сх','СХ','сХ','щ','Щ','Щ','ё','ё','Ё','Ё','Ё','ж','ж','Ж','Ж','Ж'
    ,'ч','Ч','Ч','ш','Ш','Ш','э','Э','ю','ю','Ю','Ю','Ю','я','я','Я','Я','Я'
    ,'а','А','б','Б','в','В','г','Г','д','Д','е','Е','з','З','и','И','й','Й','к','К','л','Л','м','М','н','Н','о','О'
    ,'п','П','р','Р','с','С','т','Т','у','У','ф','Ф','х','Х','ц','Ц','ъ','ы','Ы','ь'];
      
</script>
translit<input type="radio" name="ruen">
restore translit<input type="radio" name="ruen" checked>
<input type="button" onclick="alert(translit(document.getElementById('xx').value,document.getElementsByName('ruen')[0].checked))">
<textarea id="xx">Soobwenie, kotoroe nado&lt;img src=i/smiles/25.gif&gt; perevesti &lt;img src=i/smiles/23.gif&gt;prodolzenie soobwe&lt;img src=i/smiles/21.gif&gt;nijaf qwe rqwer qwer qwe </textarea>



Код остался от какого-то обсуждения транслитерации html-я, чтобы при этом теги не транслитерировать... уж и не помню откуда, вероятно с этого форума. Во всяком случае - таблица транслитерации взята, на первый взгляд, не с потолка. Я только немного причесал javascript...

Это сообщение отредактировал(а) ksnk - 29.10.2010, 16:20


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Dima85
Дата 29.10.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Все таки хочется разобраться с ошибкой в моем скрипте...
PM MAIL   Вверх
ksnk
Дата 29.10.2010, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



А что там непонятного-то? Зачем в регулярке модификатор i стоит?

Добавлено через 49 секунд
eval заменяется как в моем скрипте на new RegExp(...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Dima85
Дата 29.10.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет




Код

function convert() {
  var a = new
  Array('ё', 'ж', 'ч', 'э', 'ю', 'я', 'й', 'г', 'ф', 'о', 'т', 'ц', 'ш', 'ы', 'л', 'ь', 'у', 'щ', 'в', 'д', 'с', 'к', 'з', 'а', 'м', 'е', 'х', 'п', 'и', 'н', 'р', 'б', 'ъ', 'ь')
  var b = new
  Array('jo', 'zh', '4', 'je', 'ju', 'ja', 'j', 'g', 'f', 'o', 't', 'c', '6', 'y', 'l', 'j', 'u', 'w', 'v', 'd', 's', 'k', 'z', 'a', 'm', 'e', 'x', 'p', 'i', 'n', 'r', 'b', '#', '\'')
  var x = document.forms['ffr'].text.value
  for (i = 0; i < a.length; i++) {
    y = new RegExp($a[i],'gm');
    x = x.replace(y, b[i])
  }
  document.form.text.value = x
}


Так?
PM MAIL   Вверх
ksnk
Дата 29.10.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Ну, за исключением пары пустяков
Цитата

new RegExp($a[i],'gm');

ну и не хватает больших букв в таблице.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Dima85
Дата 30.10.2010, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1126 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.