不同编码时的String.replace()

时间:2018-08-14 08:07:27

标签: javascript json node.js replace aws-lambda

当我在来自不同系统的响应消息(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}}

有办法避免这种情况吗?

我尝试搜索答案,但只找到基本案例的文章。

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,但允许使用无效的代理对)。