2016-01-28 1 views
-1

Я хочу найти частичное появление слова в строке и прикрепить вокруг него <span>.Как найти частичное вхождение слова в строку и заменить все слово

Подробнее, я хочу найти все вхождения слов, начиная с знака процента "%" (например,% mystring) и заменить их на <span>%mystring<span>.

Я нашел некоторые аналогичные решения в PHP, но я не уверен, как это сделать в JavaScript.

+0

Пожалуйста, покажите, что вы * пытались *, а не только состояние вы нашли код PHP, который нельзя использовать в JS. В противном случае вопрос не соответствует теме. –

ответ

1

попробовать это:

str = 'go to this %link not this %link'; 
replacedStr = str.replace(/\s\%(.*?)(\s|$)/g, ' <span>%$1</span>$2'); 
+0

Это сработало? – Vegeta

+0

Он работает до определенной точки. Я могу добавить, например, перед моей строкой, но как добавить в конец строки тоже? – alemur

+0

не может понять ваше требование? PLS объяснить на примере? – Vegeta

0

Вы можете использовать метод replace;

'This is %mystring. What is %yourstring?'.replace(/%mystring/g, '"%mystring') 
// returns This is "%mystring. What is %yourstring? 

EDIT: Я обновил свой ответ на полноту (ответ VEGETA выглядит, как он решил проблему):

var mystring = '%this is my string. what is your string?' 
mystring.replace(/\%(\w+)/g, '\"%$1') 
+0

Да, но я не знаю содержание mystring, я просто знаю, что он начинается с% :) – alemur

0

если нет мандата использовать regex :), затем попробуйте

var text = "sadfg dfgikwer sfd dfg3 dfg4 sdfsdfb"; 
text = text.split(" ").map(function(value){ if (value.indexOf("dfg") != 0){ return value }else { return "new" } }).join(" "); 
alert(text); 

это заменяет слово, которое начинается с dfg с new

делает этого метод распутывания

function replaceOldWithNew(text, oldStr, newStr) 
{ 
    return text = text.split(" ").map(function(value){ if (value.indexOf(oldStr) != 0){ return value }else { return newStr } }).join(" "); 
} 

replaceOldWithNew("sadfg dfgikwer sfd dfg3 dfg4 sdfsdfb", "dfg", "new") 
+0

Спасибо, это было здорово, но Vegeta ответил первым :) Спасибо! – alemur

+0

@alemur не беспокоится. – gurvinder372

0

пожалуйста, попробуйте следующий код:

var str = "my str is %something %somethingElse"; 
var newStr = str.replace(/%(\S+)/g, function(match, p1) {return '<a>' + p1 + '</a>'}); 
Смежные вопросы