转义一个只知道其索引的字符

Escape a character knowing only its index

我想转义一个只知道其索引的 \n 字符。我不是要替换字符本身,而是 "prepend" 现有 \n 的转义字符,有效地转义它。

例如,在JavaScript中:'\' + '\n' === '\\n'

我要找的是 \n 而不是 \\n

重申一下,我不想完全替换 \n。我很清楚 '\n'.replace('\n', '\n') 会做我正在寻找的事情。我只是想在现有换行符前添加一个转义字符。 JS 在文字前加上反斜杠并且不转义换行符是有原因的吗?

'\' + '\'' === "\'"

我想我想知道为什么换行符的行为不同。感谢您的任何想法!

不可能在字符前面加上反斜杠来转义它。例如换行符,'\n',到Javascript,这是一个包含一个字符代码的字符串:10.

for (const char of '\n') {
  console.log(char.charCodeAt());
}

实际上那里的任何地方都没有 n(也不是文字反斜杠)- \n 只是程序员使用和理解的约定来引用换行符。如果字符串由文字反斜杠和文字 n 组成,则字符代码完全不同:字符代码为 92(用于反斜杠)和字符代码为 110(用于 n ).

for (const char of '\n') {
  console.log(char.charCodeAt());
}

您唯一的选择是用反斜杠和 n 完全替换文字换行符(使用 '\n'.replace('\n', '\n') - 或者,对于更通用的解决方案,构造一个 Map 或文字字符对象及其转义序列)