Показать сообщение отдельно
  #6 (permalink)  
Старый 01.06.2013, 18:03
Аватар для 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 = "Как хорошо мыла мама раму";

str.toLowerCase(); //в нижний регистр
str += ' ' + code(str); //добавляем к строке закодированный вариант
str = escapeRegExp(str); //экранируем спецсиволы
str = arrayUniqueString(str.split(/\s+/)).join('|'); //очищаем от дубликатов(в принципе можно обойтись без этого)
 
var reg = new RegExp( '(^|\\s)(' + str + ')(?=\\s|$)', 'gi' ); //так находит только целые слова
//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, '$1<b>$2</b>');  
//while(i--) strIn[i] = strIn[i].replace(reg, '<b>$&</b>');
  
alert(strIn.join('\n'))
__________________
29375, 35

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