所以我已经有了这个工作,但我希望有人可以帮我优化它。
我有大量的XML数据,我抓住并且无法控制。其中一个标签中有标记,而不是使用>,<并且“它使用HTML名称。我设置了一个非常简单的函数来返回带有正确元素的字符串,以便我可以将它写入页面。
我只是想知道,我的cleanFeedDescription()功能可以做得更清洁一点,更优化吗?
<script type="text/javascript">
var textString = '<img src="/media/filter/small/transfer/a0/46/21ca7da7/3569/1774/cf3f/82634fc4/img/4th_of_july_209.jpg" alt="" /> <p class="long-description"><span class="uploaded-date">Uploaded 2010-11-29 18:24:24</span><span class="uploaded-by">by gin_alvizo</span><span class="uploaded-to">part of Bull's-Eye Bold BBQ powered by ...</span></p>';
document.write(cleanFeedDescription(textString));
function cleanFeedDescription(descString) {
descString = descString.replace(/</g, '<');
descString = descString.replace(/>/g, '>');
descString = descString.replace(/"/g, '"');
return descString;
};
</script>
答案 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(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');