【问题标题】:String.replace() in case of different encodingsString.replace() 在不同编码的情况下
【发布时间】:2019-01-21 00:40:31
【问题描述】:

当我在来自不同系统的响应消息(lambda 函数回调)上使用 JSON.stringfy().replace(/[\t\r\n]/g,"").trim() 时,我遇到了一个问题,\t 将被 \\t\ 替换为 \\\

有没有办法避免这种情况?

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

【问题讨论】:

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


【解决方案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,除了允许无效的代理对)。

【讨论】:

    猜你喜欢
    • 2019-05-07
    • 2020-03-13
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多