如何解决将反斜杠应用于变量不是 String.raw
我想从包含 \n
的变量 (char
) 中获取换行符 'n'
我试过了:
`\\${char}`; // Not working,its 2 character not a newline character
'\' + char; // Obviously this will not work
是否存在某些东西,例如 String.applyBackslash()
?
解决方法
没有这样的方法,不。 :-) 有两种方法可以做到:
-
一个查找表(对象或
Map
)将n
映射到\n
等(没有那么多转义序列。) 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
或 String.fromCodePoint
创建结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。