【问题标题】:In javascript, how do I replace multiple strings with bold text without overriding the previous bold string?在javascript中,如何用粗体文本替换多个字符串而不覆盖以前的粗体字符串?
【发布时间】:2018-04-15 14:49:38
【问题描述】:
function replaceKeys(inputString, keys){

    for (var i = 0; i < keys.length; i++) {
                var t = keys[i];
                if (t) inputString= inputString.replace(new RegExp(t, 'gi'), '<strong>' + t + '</strong>');
            }
            return s;
}  

使用上面的 javascript 方法,我尝试根据“键”或字符串部分的列表将给定字符串中的所有文本加粗。

输入示例:
键=[“人”,“str”] inputString="strong man"
预期输出
strong ma​​n

不幸的是,输出也替换了强标签的“str”部分。意味着输出变为

strong>strstrong>ong ma​​n
是否有正则表达式或其他方法,以便我可以忽略字符串中的 html 标记,这样它就不会出现这种奇怪的行为?

【问题讨论】:

    标签: javascript string string-matching


    【解决方案1】:

    你可以通过定义一个占位符而不是直接使用&lt;strong&gt;标签来做到这一点:

    function replaceKeys(inputString, keys){
        var placeholder = '!!';
        var s = inputString.replace(new RegExp(/strong>/gi),placeholder);
        for (var i = 0; i < keys.length; i++) {
                    var t = keys[i];
                    if (t) s = s.replace(new RegExp(t, 'gi'), '<' + placeholder + t + '</' + placeholder );
                }
                return s.replace(new RegExp(placeholder,'g'),'strong>');
    } 
    replaceKeys("strong man",["man", "str"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2022-11-17
      • 2021-05-15
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多