我有一个这样的字符串: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);
然后我尝试将#替换为#,如果#是奇数或偶数,但它没有像我预期的那样工作
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会返回比原始文本更多的文本。
解决此问题的最佳方法是什么?
谢谢
答案 0 :(得分:3)
您可以使用
var text = "sdasd #ELEMENT1# asdasd #ELEMENT2#";
text = text.replace(/#(.*?)#/g, '<button>$1</button>');
snippet.log(text)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>