我们说我得到了这样的字符串
'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) );
但是我对替换失败了......如此接近,但到目前为止......
答案 0 :(得分:4)
您可以非常轻松地使用正则表达式...这将适用于您的所有字符串。
JSFiddle(检查js控制台)
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);
答案 1 :(得分:0)
我认为替换参数中的正确特殊替换字符应该是$&
而不是$1
,只是为了便于阅读和最佳做法。
$&
对应匹配的子字符串,而$1
使得RegExp对象中似乎有多个匹配。
参考此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace