Показать сообщение отдельно
  #7 (permalink)  
Старый 01.06.2013, 21:23
Аспирант
Отправить личное сообщение для Neznayka Посмотреть профиль Найти все сообщения от Neznayka
 
Регистрация: 08.03.2013
Сообщений: 37

Aetae,
Спасибо за ответ ! Немного не работает, а именно определяет rus-символы переведенные в eng-символы из шаблона str, в строках массива strIn, но не определяет eng-символы переведенные в rus-символы из шаблона str, в строках массива strIn.
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.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 = ['Мама мыла раму', 'Vskf Vfvf', 'Мыла vfvf раму', 'Раму vskf мама', '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'));

Хотел кнопку Запустить вставить, но не знаю как это сделать, поэтому просто код. Поиск по целым словам не актуален, актуально по кускам слов. Помогите пожалуйста вот этот момент доделать, чтобы определяло и обрамляло тегом b eng-символы переведенные в rus-символы из шаблона str, в строках массива strIn.

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