使用<span>元素着色纯文本字符串

好吧,所以我做了这个功能:

String.prototype.colorize = function() {
    return this.replace(/&([0-9]{1,3})/gi, function($0, $1, offset) {
        return (offset > 0 ? "</span>" : "") + '<span style="color: hsl(' + $1 + ', 100%, 50%)">';
    });
};

它基本上将纯文本字符串转换为具有颜色的html跨度,以便例如使用HSL颜色比例使&240Hello变为蓝色。

现在的问题是,我需要它在字符串的最后添加</span> ,只要它找到了任何匹配,以便它自己关闭。 我可以将它存储在str中,然后执行if (str.indexOf("span") > -1) str += "</span>" 。 但是我认为这看起来很丑陋,有没有办法在替换函数中修复这个问题?

我注意到这并不重要,因为如果你使用innerHTML附加它,它会自动生成一个</span>标签,只是为了清楚起见,我该怎么做?

先谢谢你。


所以我找到了解决方案,它比问题的代码更清晰:

String.prototype.colorize = function() {
    return this
        .replace(/&([0-9]{1,3})/g, '</span><span style="color: hsl($1, 100%, 50%)">')
        .replace(/(</span>)(.*)/g, "$2$1");
};
链接地址: http://www.djcxy.com/p/15359.html

上一篇: Colorize plain text string with <span> elements

下一篇: Strip HTML from Text JavaScript