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.
}
上面的脚本会返回类似“[它是一个测试字符串”的内容我需要将此结果称为“它是一个测试字符串”请帮助我....
答案 0 :(得分:2)
实际上如果没有正则表达式,这样做会更容易。
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
的略微修改版本
答案 1 :(得分:1)
我的想法是计算所有退格[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
答案 2 :(得分:0)
答案 3 :(得分:0)
我发现的一个问题是你没有设置一个条件,当字符串'[BACK]'
处于零位置时你不必删除第一个字符。
好吧,我在这里发布的解决方案首先搜索第一个'[BACK]'
字符串的位置,然后创建我们要删除的字符的子字符串,这样,如果字符串前面有一个字符'[BACK]'
,它包含在子字符串中。然后,从主字符串中删除子字符串,并继续循环,直到删除所有'[BACK]'
。
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 (i = 0; i < cnt; i++) {
pos = str.search("[BACK]");
if (pos - 1 > 0) {
str = str.replace(str.substring(pos - 2, pos + 5), '');
} else {
str = str.replace(str.substring(pos - 1, pos + 5), '');
}
}