【问题标题】:How do I unescape backslash escaped characters?如何取消转义反斜杠转义字符?
【发布时间】:2021-01-08 18:29:29
【问题描述】:

如何在 JavaScript 中取消转义这样的字符串

alert(\"Testing\");\nconsole.log(\"Hello\");

所以这是转义到这个:

alert("Testing");
console.log("Hello");

我有一个使用 api 并返回转义字符串的程序,但我想用文字表示替换字符串的转义版本,例如"\n" 带有换行符。我看到了question,里面有这段代码可以转义一个字符串,但是没有说明如何撤消操作,为了更好地理解字符串是如何转义的,这里是有问题的函数转义一个字符串:

function addslashes(string) {
    return string.replace(/\\/g, '\\\\').
        replace(/\u0008/g, '\\b').
        replace(/\t/g, '\\t').
        replace(/\n/g, '\\n').
        replace(/\f/g, '\\f').
        replace(/\r/g, '\\r').
        replace(/'/g, '\\\'').
        replace(/"/g, '\\"');
}

我非常想撤销它。提前致谢!

编辑

原来我可以这样做:

var string = "<!DOCTYPE html><script>alert(\"Hello\");<\/html>"
console.log(unescape(escape(string)));
      

【问题讨论】:

  • 为什么需要这样做?你试过直接显示字符串吗?
  • 在我的具体情况下,我正在制作一个小书签,用于美化任何文本区域中的选定代码。我创建的 API 返回了一个转义字符串,我需要取消转义。

标签: javascript escaping


【解决方案1】:

您可以使用内置的unescape() 函数

const unescaped = unescape(`alert(\"Testing\");\nconsole.log(\"Hello\");`);
console.log(unescaped)

这是撤消您所做的特定编码的替代答案

const escapedString = `alert(\"Testing\");\nconsole.log(\"Hello\");`

function removeSlashes(string) {
    return string.replace('\\\\', /\\/g).
        replace('\\b', /\u0008/g).
        replace('\\t', /\t/g).
        replace('\\n', /\n/g).
        replace('\\f', /\f/g).
        replace('\\r', /\r/g).
        replace('\\\'', /'/g).
        replace('\\"', /"/g);
}

console.log(removeSlashes(escapedString));

【讨论】:

  • 我也需要它来允许类似 "%20" 的东西,而不是转义它。
  • 我更新了我的答案以包含一个替代解决方案,这行得通吗?
  • 是的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2012-02-10
  • 2021-12-16
  • 1970-01-01
  • 2021-02-28
相关资源
最近更新 更多