2016-03-21 4 views
0

Скажем, у меня есть строки как этотJQuery - найти и заменить подстроку

'Hello, I am ***Groot*** today.' 
'This is ***not*** my final form.' 
'Test test ***123***' 

, и я хочу, чтобы добавить некоторые новые вещи перед первой и после второй звездочкой, чтобы сделать его похожим на

'Hello, I am FIRST***Groot***LAST today.' 
'This is FIRST***not***LAST my final form.' 
'Test test FIRST***123***LAST' 

до сих пор мне удалось получить эту

var first = jQuery(this).html().indexOf("***"); 
var last = jQuery(this).html().lastIndexOf("***"); 
console.log(jQuery(this).html().substring(first, last+3)); 

, но я не на замену ... так близко, но до сих пор ....

ответ

4

Вы можете использовать regex довольно легко ... это будет работать для всех ваших строк.

JSFiddle (проверьте консоль расслоение плотной)

var str = jQuery(this).text(); 
str = str.replace(/(\*{3}.*\*{3})/, "FIRST$1LAST"); 
console.log(str); 

Кроме того, вам не нужно создавать объекты, с которыми JQuery только, чтобы получить текст, мог бы просто сделать это:

var str = this.innerText; 
str = str.replace(/\*{3}.*\*{3}/, "FIRST$&LAST"); 
console.log(str); 
0

Я считаю, правильный специальный символ замены в вашем параметре замены должен быть $&, а не $1 только для удобства чтения и лучших практик.

$& соответствует соответствующей подстроке, тогда как $1 показывает, что в объекте RegExp имеется несколько совпадений.

Справка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

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