【问题标题】:How to pass a string variable to String.raw in javascript?如何在javascript中将字符串变量传递给String.raw?
【发布时间】:2020-06-06 03:45:04
【问题描述】:

我有一个变量,其中我有以乳胶格式编写的文本

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

当我执行console.log(textVar) 时,我丢失了我的转义字符(\ + 下一个字符)我了解文本中转义字符的功能,我需要添加双引号(\\)以便将它们保留在@ 987654325@,我做不到

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

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

虽然String.raw`${textVar}`这不起作用

【问题讨论】:

  • 不,模板字符串语法允许将原始字符串传递给 String.raw 使用的标记函数。一旦分配了字符串,就为时已晚。您能做的最好的事情就是保留一个乳胶命令列表并在那时“修复”它们。

标签: javascript string template-literals


【解决方案1】:

如果您的意思是您提到的字符串文字已经分配给textVar,并且您想获取您之后在字符串文字中输入的原始字符串,那么不,这是不可能的。

一旦将字符串文字分配给变量,该信息就会丢失。

如果您无法转义字符串文字中的反斜杠,唯一的选择是将String.raw 直接分配给您的textVar

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

【讨论】:

  • 如果 textVar 是 post api body 中的一个字段,我该如何应用 String.raw 呢?
  • 您的意思是从 AJAX 请求中获取此字符串吗?如果是这种情况,则不适用。您已经将响应作为字符串而不是字符串文字获得。
  • 是的,我从 AJAX 获取一个字符串,但是当我尝试在后端将此字符串用于其他目的时,我丢失了这些转义字符
  • 那么 JSON 格式不正确,您可能应该与后端开发人员交谈。如果他们使用标准 JSON 库进行序列化,反斜杠应该在序列化时被转义。仔细检查并查看您从后端 API 获得的实际 JSON 响应,看看它是否正确。
  • 它没有丢失。您正在复制/粘贴不代表实际字符串的有效 JavaScript(或 JSON)表示的数据的装饰视觉表示。以这种方式可视化只是为了方便眼睛。 JSON 的存在是有原因的:数据的正确序列化。无论您做什么将 JavaScript 数据序列化为字符串都是错误的。您应该使用的输出来自JSON.stringify(data),而不是您从控制台获得的数据的一些复制/粘贴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 2016-11-18
  • 2020-06-16
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多