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.
}上面的脚本返回类似于"[BACK it's a test string“的内容,我需要将此结果作为"it's a test string”返回,请帮助我....
发布于 2011-12-22 15:53:00
实际上,在没有正则表达式的情况下更容易做到这一点。
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进行了稍微修改的版本
发布于 2011-12-22 16:09:40
我的想法是计算所有的退格符[BACK],然后用一个空字符串逐个替换它们:
var str="itss[BACK][BACK][BACK][BACK][BACK][BACK] it's a test stringgg[BACK][BACK]";
var backspaces = str.match(/\[BACK\]/g).length;
for(i=0; i<backspaces; i++)
{
str = str.replace(/.?\[BACK\]/, '');
}
document.write( str );工作示例:jsFiddle
发布于 2011-12-22 15:37:51
如果我没理解错的话
var dat = str.split('[BACK]').filter(function(e){return e})[1];here是一个有效的演示。
https://stackoverflow.com/questions/8600578
复制相似问题