【问题标题】:Awkward escape characters尴尬的转义字符
【发布时间】:2018-03-19 03:14:39
【问题描述】:

在尝试console.log 字符串时,我遇到了一个相当烦人的问题。我将字符串2^{\\frac{1}{2}}x=1 存储在Node.js 数据库中,但在输出时它会给出2^{rac{1}{2}}x=1。我预测了\f 转义字符的问题,因此我添加了第二个\ 来逃避这个问题。但问题仍然存在,我不知道如何解决它。

查看 Mongoose 调试输出时,它清楚地将其正确存储在数据中:

它是这样分配的:

contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";

当我运行这条线时:

console.log(contentHolder);

我明白了:

2^{rac{1}{2}}x=1

【问题讨论】:

    标签: javascript node.js mongoose escaping ejs


    【解决方案1】:

    如果您在网络浏览器中查看“源”,我想您会看到:

    contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";
    

    会生成这个:

    contentHolder = "2^{\frac{1}{2}}x=1";
    

    当解释该 JS 字符串文字时,\f 将被转换为换页符,这显然不是您想要的。

    您可以尝试多种方法来解决转义问题,但我想我会使用JSON.stringify

    contentHolder = <%- JSON.stringify(testData.topics[i].questions[t].methods[p][0].content) %>;
    

    可能在某些边缘情况下,这仍然不能完全正确地转义,但除非您输出用户输入的值,这不太可能成为问题。

    【讨论】:

    • 我已经在您回答之前修复了它,但您的回答几乎就是我修复它的方式。
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多