【问题标题】:Replace certain characters by html element用html元素替换某些字符
【发布时间】: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


    【解决方案1】:

    你可以使用

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多