【问题标题】:How to dynamically add escape character for any character in javascript?如何为javascript中的任何字符动态添加转义字符?
【发布时间】:2017-01-03 16:33:01
【问题描述】:

我有带有一些文本的 p 元素。在 HTML 代码中的这段文本中,我使用了一些“转义”字符,例如 \n\?\t 等。当我得到JS 代码中的字符串,它被视为 \\n\\?\\t。我想在 sn-p 中将其替换为 REAL 转义字符,如下所示。

我想将字符串中的所有 "\\char" 更改为转义输出 "\char"

当我分别替换所有字符时(如下所示)它可以工作,但我想知道如何一次为我的文本中以 \ 开头的所有字符执行此操作。

我需要这样的东西:

.replace(/\\/,'\')

或类似的东西:

.replace(/\\(.)/,'\$1')

但它不起作用,因为斜杠 \ 使以下符号 '$ 在代码中转义。除了使用 \ 之外,还有什么方法可以插入转义字符?

var input = document.getElementById('sampInput');
var output = document.getElementById('sampOutput');

var parsedInput = input.innerHTML
                   .replace(/\\n/g,'\n')
                   .replace(/\\t/g,'\t')
                   .replace(/\\\*/g,'*')
                   .replace(/\\\?/g,'?');

output.innerHTML = parsedInput;
p {
  white-space:pre;
}
<h4>Input:</h4>
<p id="sampInput">hello\nworld\nhello\tworld\nsome \? character and another \* character</p>

<h4>Output:</h4>
<p id="sampOutput"></p>

【问题讨论】:

  • 您认为\*\? 是什么意思?比如,你希望它是什么 Unicode 代码点?它们不是标准的 JavaScript 转义码,例如 \t\n
  • 是的,我知道。我只想获得与 JS 字符串中的任何转义字符相同的效果 console.log("some\*text\?sample"); \\some*text?sample
  • Pawle,"some\*text\?sample" = "some*text?sample",你的字符串文字不包含文字反斜杠。

标签: javascript regex escaping


【解决方案1】:

没有直接的方法来做你所要求的,但你可以编写一些代码来做到这一点:

var charmap = {
  n: "\n",
  r: "\r",
  f: "\f",
  t: "\t",
  b: "\b"
};
var replaced = string.replace(/\\(.)/g, function(_, char) {
  return (char in charmap) ? charmap[char] : char;
});

如果你想额外解析 \uNNNN 转义,那就有点复杂了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    相关资源
    最近更新 更多