我必须形成一个JSON字符串,其中一个值有新的行字符。这必须转义,然后使用AJAX调用发布。谁能建议一种用JavaScript转义字符串的方法?我没有使用jQuery。
当前回答
恕我直言,Alex给出的答案是不正确的,婉转地说:
Alex试图转义的一些字符根本不需要转义(比如&和'); \b根本不是退格字符,而是一个单词边界匹配 需要转义的字符不会被处理。
这个函数
escape = function (str) {
// TODO: escape %x75 4HEXDIG ?? chars
return str
.replace(/[\"]/g, '\\"')
.replace(/[\\]/g, '\\\\')
.replace(/[\/]/g, '\\/')
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t')
; };
似乎是一个更好的近似。
其他回答
RegExp单行,使用这个函数:
function escapeJSON(string) {
return string.replace(/[\n"\&\r\t\b\f]/g, '\\$&');
}
像你一样,我一直在寻找一些评论和帖子来替换我的JSON中包含html对象的特殊转义字符。
我的对象是删除JSON对象中的特殊字符,并渲染JSON对象内部的html。
以下是我所做的,希望使用起来非常简单。
首先我使用了JSON。stringify我的json对象和json。解析结果。
如:
JSON.parse(JSON.stringify(jsonObject));
它解决了我的问题,并使用纯Javascript。
使用encodeURIComponent()对字符串进行编码。
例如。var myEscapedJSONString = encodeURIComponent(JSON.stringify(myJSON));
你不需要解码它,因为web服务器会自动做同样的事情。
根据user667073的建议,除了先重新排序反斜杠替换,并修复引号替换
escape = function (str) {
return str
.replace(/[\\]/g, '\\\\')
.replace(/[\"]/g, '\\\"')
.replace(/[\/]/g, '\\/')
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t');
};
恕我直言,Alex给出的答案是不正确的,婉转地说:
Alex试图转义的一些字符根本不需要转义(比如&和'); \b根本不是退格字符,而是一个单词边界匹配 需要转义的字符不会被处理。
这个函数
escape = function (str) {
// TODO: escape %x75 4HEXDIG ?? chars
return str
.replace(/[\"]/g, '\\"')
.replace(/[\\]/g, '\\\\')
.replace(/[\/]/g, '\\/')
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t')
; };
似乎是一个更好的近似。
推荐文章
- 如何在javadoc中转义@字符?
- 清除JavaScript中的缓存
- 如何在使用Javascript替换DOM元素?
- 在Redux应用程序中哪里写localStorage ?
- 如何在ReactJS中从“外部”访问组件方法?
- 为时刻添加持续时间(moment.js)
- 如何在JavaScript中获得时区名称?
- 在JSON键名中哪些字符是有效的/无效的?
- jQuery中的live()转换为on()
- 如何区分鼠标的“点击”和“拖动”
- IE9是否支持console.log,它是一个真实的功能吗?
- Node.js同步执行系统命令
- 如何转义JSON字符串包含换行字符使用JavaScript?
- jQuery等价于JavaScript的addEventListener方法
- jQuery需要避免的陷阱