Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как найти в слове определенный символ ? (https://javascript.ru/forum/events/60321-kak-najjti-v-slove-opredelennyjj-simvol.html)

optsar 22.12.2015 14:52

Как найти в слове определенный символ ?
 
Подскажите как найти в слове определенные символы ?

например:

var slovo = 'javascript';

var search = 'vas';

Нужно получить примерно такое:

var result = ja<b>vas</b>cript;

Vlasenko Fedor 22.12.2015 15:43

var slovo = 'javascript';
var search = 'vas';
var regex = new RegExp(search);
var result = regex.test(slovo) ? slovo.replace(search, '<b>' + search + '</b>') : slovo;
alert(result);

optsar 22.12.2015 16:12

Спасибо! а можно как поправить что бы регистронезависимо было ?

Lemme 22.12.2015 16:20

new RegExp(search, 'i');

optsar 22.12.2015 16:27

Цитата:

Сообщение от Lemme (Сообщение 400903)
new RegExp(search, 'i');

не работает

optsar 22.12.2015 16:53

нет не работает шаблон у меня

Vlasenko Fedor 22.12.2015 16:57

var slovo = 'javascript';
var search = 'VAS';
var regex = new RegExp('(' + search + ')', 'i');
var result = regex.test(slovo) ? slovo.replace(regex, '<b>' + "$1" + '</b>') : slovo;
alert(result);

так регистронезависимо будет

ruslan_mart 22.12.2015 18:44

В подстроке нужно бы ещё спецсимволы экранировать, а то:

var slovo = 'javascript';
var search = 'V.S';
var regex = new RegExp('(' + search + ')', 'i');
var result = regex.test(slovo) ? slovo.replace(regex, '<b>' + "$1" + '</b>') : slovo;
alert(result);



--------
Вариант без регулярок, может кому-нибудь пригодится:


function searchToBold(text, search) {
	var i = text.toLowerCase().indexOf(pattern.toLowerCase());
	if(i + 1) {
		text = text.substr(0, i) + text.substr(i, search.length).bold() + text.substr(i + search.length);
	}
	return text;
}


alert(searchToBold('javascript', 'vas'));


P.S.: bold() хоть и устаревший метод, но смотрится красивее. :)


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