JavaScript匹配和替换;什么是最好的方法?

时间:2010-12-17 18:51:46

标签: javascript xml regex replace return

所以我已经有了这个工作,但我希望有人可以帮我优化它。

我有大量的XML数据,我抓住并且无法控制。其中一个标签中有标记,而不是使用>,<并且“它使用HTML名称。我设置了一个非常简单的函数来返回带有正确元素的字符串,以便我可以将它写入页面。

我只是想知道,我的cleanFeedDescription()功能可以做得更清洁一点,更优化吗?

<script type="text/javascript">
        var textString = '&lt;img src=&quot;/media/filter/small/transfer/a0/46/21ca7da7/3569/1774/cf3f/82634fc4/img/4th_of_july_209.jpg&quot; alt=&quot;&quot; /&gt; &lt;p class=&quot;long-description&quot;&gt;&lt;span class=&quot;uploaded-date&quot;&gt;Uploaded 2010-11-29 18:24:24&lt;/span&gt;&lt;span class=&quot;uploaded-by&quot;&gt;by gin_alvizo&lt;/span&gt;&lt;span class=&quot;uploaded-to&quot;&gt;part of Bull&#039;s-Eye Bold BBQ powered by ...&lt;/span&gt;&lt;/p&gt;';

        document.write(cleanFeedDescription(textString));

        function cleanFeedDescription(descString) {

            descString = descString.replace(/&lt;/g, '<');
            descString = descString.replace(/&gt;/g, '>');
            descString = descString.replace(/&quot;/g, '"');

            return descString;
        };
    </script>

3 个答案:

答案 0 :(得分:2)

Here是一个方便的JS库,可以为您进行HTML实体编码/解码,无需重新发明轮子。

或者,如果你使用的是jQuery,那么similar question on SO就会有一个以jQuery为中心的解决方案。

答案 1 :(得分:1)

我建议您只使用一个替换功能而不是多个功能,这将更快,更容易维护。

function cleanFeedDescription(descString) 
{
    var replacements = { lt: '<', gt: '>', quot: '"' };

    return descString.replace(/&(\w+);/g, function(str, entity)
    {
        return replacements[entity] || "";
    });
};

答案 2 :(得分:0)

嗯,你真的不需要为descString分配中间值,所以你可以这样做......

return descString.replace(/&lt;/g, '<')
                 .replace(/&gt;/g, '>')
                 .replace(/&quot;/g, '"');