当我在来自不同系统的响应消息(lambda函数回调)上使用 dpkg: error processing package linux-image-4.15.0-20-generic (--remove):
installed linux-image-4.15.0-20-generic package post-removal script subprocess returned error exit status 1
Errors were encountered while processing:
linux-image-4.15.0-20-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
时,会遇到一个问题,其中JSON.stringfy().replace(/[\t\r\n]/g,"").trim()
将被\t
和\\t
替换为{{ 1}}
有办法避免这种情况吗?
我尝试搜索答案,但只找到基本案例的文章。
答案 0 :(得分:1)
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,但允许使用无效的代理对)。