Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите пожалуйста способ выделения жирным подстроки? (https://javascript.ru/forum/misc/53375-podskazhite-pozhalujjsta-sposob-vydeleniya-zhirnym-podstroki.html)

Momon 01.02.2015 11:58

Подскажите пожалуйста способ выделения жирным подстроки?
 
Строка1: "строка текста"
Строка2: "стр тек"
Нужно получить: "стр<b>ока</b> тек<b>ста</b>"

tsigel 01.02.2015 12:24

var str1 = "строка текста";
var str2 = "стр тек";

str2.split(" ").forEach(function (str) {
  str1 = str1.replace(new RegExp("(" + str + ")([^\\s]*)"), "$1<b>$2</b>");
});

alert(str1);

ksa 01.02.2015 12:26

Цитата:

Сообщение от Momon
Строка1: "строка текста"
Строка2: "стр тек"
Нужно получить: "стр<b>ока</b> тек<b>ста</b>"

Как вариант...

var str1='строка текста';
var str2='стр тек';
var a=str2.split(' ');
for (i=0; i<a.length; i++) {
	var re=new RegExp('('+a[i]+')([^\\s]*)');
	str1=str1.replace(re,'$1<b>$2</b>');
};
alert(str1);

Momon 01.02.2015 14:33

tsigel,
ksa,

Спасибо за помощь, я так понял вы использовали не пробел [^\\s] для того чтобы найти конец слова. Я привёл некорректный пример. Дело в том, что может быть любой порядок расположения и любое количество слов в str1 и str2 (т.е. там могут быть пробелы и до и после, т.е. [^\\s] не поможет), но все слова в str2 всегда есть в str1 либо как отдельные слова, либо как начала слов.

Если бы нужно было бы наоборот выделить совпадение жирным было бы просто. У меня вот единственная идея задать css class всей строке str1 с жирным начертанием, а у совпадений изменять на class="".

tsigel 01.02.2015 14:36

Momon,
Мне кажется что это хорошая идея и её просто реализовать.

ksa 01.02.2015 21:06

Цитата:

Сообщение от Momon
Я привёл некорректный пример.

Так приведи корректный... :D


Часовой пояс GMT +3, время: 00:59.