【发布时间】:2015-09-16 15:15:40
【问题描述】:
我有一个这样的字符串:var text = "sdasd #ELEMENT1# asdasd #ELEMENT2#";,我必须将所有 #ELEMENT-X# 替换为一个按钮,你会得到类似 sdasd <button>ELEMENT1</button> asdasd <button>ELEMENT2</button> 的内容。
我有一个小正则表达式,它返回每个 # 的索引数组
var regexp = /\#/g;
var match, matches = [];
while ((match = regexp.exec(text)) != null) {
matches.push(match.index);
}
console.log(matches);
然后我尝试将 # 替换为 and if # 是奇数还是偶数,但它并没有像我预期的那样工作
var count=0;
var countPos=0;
var tempText='';
for(var j=0; j<text.length; j++){
for(var k=0; k<matches.length; k++){
if(j===matches[k]) {
if(count%2 !== 0){
tempText = text.substr(countPos,j);
finalText += tempText.replace("%", '<button type="button" class="btn btn-default btn-xs fx-remove" data-var-token="[%XPTO%]" contenteditable="false">')
}else{
tempText = text.substr(countPos,j);
finalText += tempText.replace("%","</button>");
}
finalText += text.substr(countPos,j);
count++;
countPos = j;
}
}
}
console.log('--------- '+finalText+' ---------------');
我的 finalText 返回的文本比原始文本多得多。
解决这个问题的最佳方法是什么?
谢谢
【问题讨论】:
标签: javascript regex string replace