var str="itss[BACK][BACK][BACK][BACK][BACK][BACK] it's a test stringgg[BACK][BACK]";
var word = '[BACK]';
var substrings = str.split(word);
var cnt= substrings.length - 1;
for(var i = 0;i<cnt;i++){
  str = str.replace(/.{1}\[BACK\]{1}/i,""); //remove backspace and one character before it.
}


上面的脚本返回类似“ [返回,这是一个测试字符串”的信息,我需要获取此结果,因为“这是一个测试字符串”,请帮助我。

最佳答案

实际上,没有正则表达式会更容易做到这一点。

String.prototype.replaceFromIndex=function(index, length, replace) {
    return this.substr(0, index) + replace + this.substr(index+length);
}

var search = '[BACK]';
var str="itss[BACK][BACK][BACK][BACK][BACK][BACK] it's a test stringgg[BACK][BACK]";

while((index = str.indexOf(search)) >= 0){
    str = str.replaceFromIndex(index-1, search.length+1, '');
}

alert(str);


检查http://jsfiddle.net/fRThH/2/以获取工作示例。
将其包装在一个函数中,您就可以开始使用!

感谢Cem Kalyoncu(https://stackoverflow.com/a/1431113/187018)提供的String.prototype.replaceAt的略微修改版本

关于javascript - 我如何在javascript中匹配和替换字符串及其前一个字母?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8600578/

10-12 01:02