【发布时间】:2019-01-21 00:40:31
【问题描述】:
当我在来自不同系统的响应消息(lambda 函数回调)上使用 JSON.stringfy().replace(/[\t\r\n]/g,"").trim() 时,我遇到了一个问题,\t 将被 \\t 和 \ 替换为 \\\
有没有办法避免这种情况?
我试图搜索答案,但只找到基本案例的文章。
【问题讨论】:
标签: javascript json node.js replace aws-lambda
当我在来自不同系统的响应消息(lambda 函数回调)上使用 JSON.stringfy().replace(/[\t\r\n]/g,"").trim() 时,我遇到了一个问题,\t 将被 \\t 和 \ 替换为 \\\
有没有办法避免这种情况?
我试图搜索答案,但只找到基本案例的文章。
【问题讨论】:
标签: javascript json node.js replace aws-lambda
JSON.stringify 的特定目的是将您提供的内容转换为 JSON。如果你给它的是一个带有反斜杠的字符串,那么你将得到的是该字符串的 JSON 表示,它是用双引号 (") 括起来的字符串,带有任何特殊字符,例如反斜杠,用反斜杠转义,换行符转换为\n,回车转换为\r,等等。
例子:
const str = document.querySelector("input").value;
console.log("The string:", str);
console.log("JSON.stringify's output:", JSON.stringify(str));
<input type="text" value="This string has a backslash in it: \ For instance, here's a backslash followed by a t: \t">
JSON.stringify 就是这样做的。如果你不想这样,不要使用JSON.stringify。
...在不同编码的情况下
那部分无关紧要。当您处理 JavaScript 字符串时,使用什么编码来表示该字符串(在 HTML 文件、.js 文件等中)并不重要。一旦它在内存中,它是由语言定义的 JavaScript 字符串的一种格式(即essentially UTF-16,除了允许无效的代理对)。
【讨论】: