Показать сообщение отдельно
  #8 (permalink)  
Старый 01.06.2013, 21:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,510

function code(str, reverse){
    var lang = [
            'qwertyuiop[]asdfghjkl;\'zxcvbnm,.',
            'йцукенгшщзхъфывапролджэячсмитьбю'
        ],
        from = lang[+!reverse],
        to = lang[+!!reverse],
        out = '';
    for(var i = 0, l = str.length; i < l; i++){
        out += to[from.indexOf(str.charAt(i))] || str.charAt(i);
    }
    return out
}
 
function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
 
function arrayUniqueString(array){
    var hash = {},
        i = array.length;
    while(i--){
        if(array[i] in hash) array.splice(i,1);
        else hash[array[i]] = true;
    }
    return array
}
 
var str = "Как хорошо vskf vfvf раму";
 
str = str.toLowerCase(); //в нижний регистр
str += ' ' + code(str) + ' ' + code(str, true); //добавляем к строке закодированный и декодированный варианты.
str = escapeRegExp(str); //экранируем спецсиволы
str = arrayUniqueString(str.split(/\s+/)).join('|'); //очищаем от дубликатов(в принципе можно обойтись без этого)
  
var reg = new RegExp( str, 'gi' ); //так найдёт куски слов(<b>Раму</b>нас Гядутис)
var strIn = ['Мама мыла раму', 'Vfvf мыла раму', 'Раму мыла мама', 'Hfve мыла мама',  'Hfve vskf vfvf', 'Мыла мама раму', 'Папа плевал на раму'],
i = strIn.length;
   
while(i--) strIn[i] = strIn[i].replace(reg, '<b>$&</b>');
   
alert(strIn.join('\n'))


Для запускания надо добавлять параметр run: [JS/HTML run].
__________________
29375, 35

Последний раз редактировалось Aetae, 01.06.2013 в 21:42.
Ответить с цитированием