如何从JavaScript中的字符串转义反斜杠

时间:2020-07-23 14:13:08

标签: javascript jquery string escaping backslash

我的输入是一个包含Windows文件路径的json。我想以html显示文件路径。请注意,我无法更改输入字符串。有人知道我可以对输入字符串执行什么操作,以便反斜杠显示在html页面中吗?我已经搜索了很多问题,但是似乎没有找到解决该问题的方法。

// The json would be something like this.
data = [ 
  {"name": "Something", "link": "C:\something\something"},
  {"name": "Something Else", "link": "C:\something\something_else"}
  ];

// Loop over the json and add the elements to the html afterwards
var list = '';
$.each(data, function () {                    
    list += `
    <p> ${this.name} </p>
    <input class="form-control" type="text" value="${this.link}">
    `;
  });

$(".some-container").html(list);

使用此代码时,不会显示反斜杠。

1 个答案:

答案 0 :(得分:2)

通过加倍转义转义符。

// The json would be something like this.
data = [ 
  {"name": "Something", "link": "C:\\something\\something"},
  {"name": "Something Else", "link": "C:\\something\\something_else"}
  ];

// Loop over the json and add the elements to the html afterwards
var list = '';
$.each(data, function () {                    
    list += `
    <p> ${this.name} </p>
    <input class="form-control" type="text" value="${this.link}">
    `;
  });

$(".some-container").html(list);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="some-container"></div>

如果您无法更改代码,则没有解决方案。解析字符串文字时,转义序列将被替换,无法恢复原始源。

转义序列仅在源代码中以字符串文字形式处理。如果您是从用户输入或API获取链接的,则完全不必担心这一点。