Транслит

Тема в разделе "JavaScript", создана пользователем Q_BASIC, 14 фев 2015.

Модераторы: ZiX
  1. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Есть функция заменяющая английские символы на русские (На случай, если пользователь пишет русское слово в английской раскладке) :
    Код:
    function translit (word){
        word = word.toLowerCase();
        var eng = ['f', ',', '<', 'd', 'u', 'l', 't', ';', ':', 'p', 'b', 'q', 'r', 'k', 'v', 'y', 'j', 'g', 'h', 'c', 'n', 'e', 'a', '[', '{', 'w', 'x', 'i', 'o', '\'', '"', '.', '>', 'z'];
        var rus = ['а', 'б', 'б', 'в', 'г', 'д', 'е', 'ж', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'х', 'ц', 'ч', 'ш', 'щ', 'э', 'э', 'ю', 'ю', 'я'];
     
        for(var i=0; i<eng.length; i++) {
            var RE = new RegExp (eng[i], 'gi');
            word = word.replace(RE, rus[i]);
        }
    
        return word;
    }

    Но почему-то не работает

    Так:
    Код:
    var RE = new RegExp (eng[i], 'gi');
    word = word.replace(RE, rus[i]);
    Когда доходит до "]" выводит ошибку:
    Код:
    SyntaxError: Invalid regular expression: /[/: Unterminated character class
    Так:
    Код:
    word = word.replace(eng[i], rus[i]);
    Вообще ничего не заменяет

    UPD

    Всё, додумался:
    Код:
    function translit (word){
        word = word.toLowerCase();
        var eng = ['f', '\\,', '\\<', 'd', 'u', 'l', 't', '\\;', '\\:', 'p', 'b', 'q', 'r', 'k', 'v', 'y', 'j', 'g', 'h', 'c', 'n', 'e', 'a', '\\[', '\\{', 'w', 'x', 'i', 'o', '\\\'', '\\"', '\\.', '\\>', 'z'];
        var rus = ['а', 'б', 'б', 'в', 'г', 'д', 'е', 'ж', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'х', 'ц', 'ч', 'ш', 'щ', 'э', 'э', 'ю', 'ю', 'я'];
       
        for(var i=0; i<eng.length; i++) {
            var RE = new RegExp (eng[i], 'gi');
            word = word.replace(RE, rus[i]);
        }
    
        return word;
    }
     
    Последнее редактирование: 14 фев 2015