【问题标题】:Prevent Javascript escaping text?防止Javascript转义文本?
【发布时间】:2016-08-15 15:05:41
【问题描述】:

声明

text = '{"section": "\main" }'

结果

"{"section": "main" }"

有没有办法防止 Javascript 解释器将反斜杠视为转义字符并将其删除?

我希望能够声明 "{"section": "\main" }" 并在输出中保留反斜杠"

"{"section": "\main" }"

注意:我意识到如果我使用两个反斜杠,它会给我想要的输出。但是我不想使用两个反斜杠,因为我有很多我包含在网页中的 Latex 代码,并且必须双重转义所有内容非常尴尬。那么有没有办法防止 Javascript 转义文本呢?

【问题讨论】:

  • 使用文本编辑器将Latex代码中的“\”替换为“\\”,一点也不尴尬。
  • 如果您不想转义@Mikey,请将文本放在 div 中并将 div 的 innerText 读入 var - 是的,我看到它删除了我的评论
  • 据我所知,JS做不到。
  • 编码中也叫回抽动
  • @dandavis 你确定够了吗?从我在 FF 和 chrome 中的测试来看,`\main` 就像"\main" 一样被转义

标签: javascript json


【解决方案1】:

supporting browsers 中,您可以像这样使用String.raw 方法:

console.log(String.raw`\main`);

【讨论】:

  • 背部抽动是否足够?现在无法测试这个
  • @mplungjan 好问题,我也看到了这条评论,并且在 dandavis 评论后回到键盘测试这个。
  • @mplungjan 所以答案在 FF 中是否定的:'hello'+`\main`->"hellomain",而'hello'+String.raw`\main`⁣⁣⁣ 正确输出"hello\main"。 (ps:有趣的是我不得不在这里使用反斜杠来发表评论;-))
  • 数据实际上是在一个变量中。是否仍然可以将 String.raw 与变量一起使用而不是直接文本?
  • @csss,正如 mplungjan 在他的回答评论中所说,“那么 [你的数据]已经逃脱了!”。如果不是,那么 JSON 解析器会抛出 SyntaxError : "bad escaped character ..."
【解决方案2】:

console.log(document.getElementById("latextstrings").innerText)
<div id="latextstrings" style="display:none">
  {"section": "\main" }
  {"section": "\sub" }</div>

【讨论】:

  • 你要如何设置innerHTML?
  • 所以非动态的。对 OP 来说可能没问题,即使我自己可能更喜欢评论节点而不是隐藏元素。
  • 我在网页中有很多 Latex 代码
  • 是的,“对 OP 来说可能没问题”我说,就在投票之前。但是他的问题是如何让js不转义文本,所以这是服务端的解决方法,不是js的解决方法。
  • 当然,但我将其读作“如何使 JavaScript 可以使用未转义的乳胶字符串”以供以后使用
【解决方案3】:

双倍转义,这是最简单的

"\\main"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多