如何保留反斜杠

时间:2019-01-25 12:51:28

标签: node.js

该值包括反斜杠和斜杠,我想保留格式

注意:我不想将原始json文件更改为要求先逃脱斜线的答案。您永远不知道哪个值应该转义,哪个不应该转义。该示例很简单,但是实际的json文件更大。我只需要读取和输出相同的数据即可。

$ cat a.json
{
  "name": "url",
  "value": "https:\/\/www.example.com"
}

但是导出其值时,反斜杠不见了。

$ cat a.js
var fs = require("fs");
var content = fs.readFileSync("a.json");
var json = JSON.parse(content);
console.log(json)

fs.writeFile("output", json.value, function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("The file was saved!");
});

这是测试结果

$ node a.js
{ name: 'url', value: 'https://www.example.com' }
The file was saved!

$ cat output
https://www.example.com

我还是要将原始值保存到文件

https:\/\/www.example.com

该怎么做?

2 个答案:

答案 0 :(得分:0)

反斜杠用作escape character.。例如,反斜杠后跟'n'将导致字符串在该点处换行。有关其他示例,请参见链接。当反斜杠后跟没有特殊格式的字符时,它将仅保留第二个字符,反斜杠将不保留 "\/" => "/"

您想要的是双反斜杠“ \”,第一个反斜杠将被视为转义符,第二个反斜杠将表示您希望将反斜杠保留在最终字符串中。

https:\\/\\/www.example.com

答案 1 :(得分:0)

该值首先不包含\字符作为数据。那是一个逃脱角色。

在JSON中,/ 前面可以有转义符,但不一定要这样。

因此在JSON中,"\/""/"是完全等效的。

在URL中,它们不是等效的。


如果您想在URL中加入\您不应该,因为它会使其成为无效的URL),那么您就需要转义{{1 }}中的原始JSON:

\

您也可以继续转义{ "name": "url", "value": "https:\\/\\/www.example.com" } ,但是如上所述,这毫无意义:

/