2016-02-10 2 views
2

Я пытаюсь создать определенное слово в строке, обернув его в тег <strong></strong>. Проблема в том, что это слово будет меняться все время, поэтому я думал о том, чтобы заставить их обернуть конкретное слово в скобках (во входном текстовом поле), а затем заменить открывающие и закрывающие скобки открывающими и закрывающимися сильными тегами.Замена определенного символа тегом html в jQuery

Например:

"Who said (romance) was dead?" 

станет

"Who said <strong>romance</strong> was dead?" 

Что бы быть лучшим способом пойти об этом?

+0

Регулярное выражение.? –

+1

Добро пожаловать в переполнение стека! См. [Ask] и [mcve]. Добавьте свои попытки. – Tushar

+0

Я думал об этом, но я мало знаю о регулярных выражениях. Пример был бы очень признателен. –

ответ

1

Вы можете использовать replace() с захватом группового REGEX

console.log(
 
    "Who said (romance) was dead?".replace(/\(([^)]+)\)/g, '<strong>$1</strong>') 
 
);

/\(([^)]+)\)/g 

Выше регулярным выражение будет соответствовать всем строкам между ( и ) и repcace захваченной группы данных окружать с <strong> бирка.

Regex explanation here

Regular expression visualization

+0

Спасибо, это очень помогло. Я закончил использование: 'var slideHeading = $ (". Slide-heading "). Text(); $ (". Slide-heading"). Html (slideHeading.replace (/ \ (([^)] +) \)/g, '$ 1')); 'который сделал трюк! –

0

если ответ без регулярных выражений является приемлемым для вас, то попробуйте :)

var str = "Who said (romance) was dead?"; 

var wordToBeStronged = "romance"; 

str = str.split("(" + wordToBeStronged + ")").join("<strong>" + wordToBeStronged + "</strong>"); 

console.log(str); 
+1

'split' и' join' будут медленнее, чем RegEx. – Tushar

+1

@Tushar Вы правы в производительности http://jsperf.com/split-and-join-vs-regex-1000/2, но на самом деле это не так уж плохо. На самом деле регулярное выражение медленнее с большими строками http://jsperf.com/split-and-join-vs-regex-1000/3 – gurvinder372

Смежные вопросы