首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中匹配和替换字符串及其前面的一个字母?

如何在javascript中匹配和替换字符串及其前面的一个字母?
EN

Stack Overflow用户
提问于 2011-12-22 15:20:02
回答 4查看 87关注 0票数 1
代码语言:javascript
复制
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”返回,请帮助我....

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-22 15:53:00

实际上,在没有正则表达式的情况下更容易做到这一点。

代码语言:javascript
复制
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进行了稍微修改的版本

票数 2
EN

Stack Overflow用户

发布于 2011-12-22 16:09:40

我的想法是计算所有的退格符[BACK],然后用一个空字符串逐个替换它们:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2011-12-22 15:37:51

如果我没理解错的话

代码语言:javascript
复制
var dat = str.split('[BACK]').filter(function(e){return e})[1];

here是一个有效的演示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8600578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档