将反斜杠应用于变量(不是 String.raw)

Applying Backslash To A Variable (Not String.raw)

我想从包含 'n'

的变量 (char) 中获取换行符 \n

我试过这个:

`\${char}`; // Not working, its 2 character not a newline character
'\' + char;  // Obviously this will not work

是否存在某些东西,例如 String.applyBackslash()

没有这样的方法,没有。 :-) 有两种方法:

  1. 查找table(对象或Map)映射n\n等(没有那么多转义序列.)

  2. eval,这可能有点矫枉过正,但没关系 当且仅当 你充分控制输入,你知道它不会用于恶意代码注入。

#1 示例:

const mappings = Object.assign(Object.create(null), {
    '"': '"',
    "'": "'",
    "\": "\",
    b: "\b",
    f: "\f",
    n: "\n",
    r: "\r",
    t: "\t",
});
const stringToTreatLiterally = "Testing \n1\n2\n3";
console.log(JSON.stringify(
    stringToTreatLiterally.replace(
        /\(["'\bfnrt])/g,
        (m, c) => `${mappings[c] || c}`
    )
));

如果你想处理 \uNNNN\u{NNNN},它们并没有那么复杂,但你必须捕获数字并使用 String.fromCharCode 或 [=18] =] 创建结果。