javascript - 在 js 中替换字符串的最快方法?

标签 javascript jquery html-encode

当我向服务器提交/发布数据时,我需要对其字符(相关字符)进行HTMLencode,因为通过设置validationRequest = false 禁用输入检查是< strong>不是一个好的做法。

所有解决方案都是最终替换字符串中的字符:

这是我写的。

function htmlEncode(str) {
    str = str.replace(/\&/g, "&amp;");
    str = str.replace(/\</g, "&lt;");
    str = str.replace(/\>/g, "&gt;");
    str = str.replace(/ /g, "&nbsp;");
    return str;
}

但显然可以用更快的东西代替正则表达式(不要误会我的意思——我喜欢正则表达式)。

此外,使用索引 + 子字符串似乎很浪费。

最快的方法是什么?

最佳答案

function htmlEncode(str) {
    return String(str)
            .replace(/&/g, '&amp;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;');
}

jsperf tests show如果您使用的是最新版本的浏览器,则此方法速度很快,而且可能是最快的选择

另一种方式也喜欢这个

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}

关于javascript - 在 js 中替换字符串的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562043/

相关文章:

javascript - 等待 sendKeys() 的 Protractor

javascript - 当我检查控制台时出现此错误 :"Uncaught SyntaxError: missing ) after argument list"

javascript - 设置3个元素的高度,取最大值,跨多行

javascript - "Image masking"缩略图 + 全尺寸图像。棘手的任务

javascript - 需要许多不同的弹出窗口;使用一个抽象的弹出窗口来处理每个场景是否更好

java - ESAPI 无法在 JSP 中工作

Javascript 类共享函数?

javascript - GoJS自定义节点保存默认值

php - 从数据库中直接输出 html

html - 如何在 HTML 中正确显示此代码片段?