如何在JavaScript中将字符串变量传递给String.raw函数?

5
我有一个变量,其中包含使用LaTeX格式编写的文本。
let textVar ="$\frac{1}{2}$"
console.log(textVar)
"$rac{1}{2}"
console.log(String.raw`$\frac{1}{2}$`)
"$\frac{1}{2}$"

当我执行console.log(textVar)时,我会丢失转义字符(\+下一个字符)。我了解文本中转义字符的功能,并需要添加双引号(\\)以保留它们在textVar中,但我无法这样做。

我发现String.raw`$\frac{1}{2}$`可以保留不转义的文本。

我能以任何方式将我的textVar传递给String.raw吗?

然而,String.raw`${textVar}`并不能起作用。


不,模板字符串语法允许将原始字符串传递给标记函数,而String.raw就是利用了这一点。一旦字符串被赋值,就为时已晚。你能做的最好的事情就是在那个时候保留LaTeX命令的列表并对它们进行“修复”。 - user120242
1个回答

2
如果您的字符串字面值已经分配给textVar,并且您想要在之后获取输入的原始字符串,则不可能实现。
一旦将字符串字面值分配给变量,该信息就会丢失。
如果您无法转义字符串字面值中的反斜杠,则唯一的选择是直接将String.raw分配给textVar

let textVar = String.raw`$\frac{1}{2}$`
console.log(textVar);


1
如果textVar是post api body中的一个字段,我该如何在其上应用String.raw? - sra1
1
那么JSON格式不正确,你应该与后端开发人员交流。如果他们使用标准的JSON库进行序列化,则在序列化时应该转义反斜杠。仔细检查并查看从后端API获取的实际JSON响应是否正确。 - user120242
后端是Javascript(nodejs)@Ivar - sra1
正确。理论上,您可以编写自己的JSON解析器来处理此情况,但这将花费您很多时间,而且当输入有效的JSON时,该解析器可能会出现错误(例如,当您传递\"时,它将向字符串添加双引号而不是结束JSON值)。让前端发送有效的JSON肯定更实际。 - Ivar
1
它并没有丢失。你正在复制/粘贴装饰性的数据可视化表示,这些表示不代表实际字符串的有效JavaScript(或JSON)表示。这仅仅是为了方便眼睛而进行的可视化。JSON存在的原因是为了正确地序列化数据。无论你用什么方法将JavaScript数据序列化为字符串都是错误的。你应该使用的输出来自于JSON.stringify(data),而不是从控制台获取的数据的某些复制/粘贴。 - user120242
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接