【问题标题】:Saving a string that contains both single and double quotes?保存包含单引号和双引号的字符串?
【发布时间】:2018-02-28 19:18:36
【问题描述】:

我有一个如下所示的对象:

obj = {book: `{title: "${this.book.title}"}`}

this.book.title 是一个字符串,可以包含未转义的单引号 ' 或双引号 "。

因此,如果标题包含“This is a "book"”,那么obj 将无效,因为它看起来像:

obj = {book: `{title: "This is a "book""}`}

有没有比this.book.title = this.book.title.replace(/(['"])/g, "\\$1"); 转义引号更好的方法?

【问题讨论】:

  • 期望的最终结果是什么?
  • 您的代码实际上创建了一个具有 book 属性的对象,该属性的值是一个字符串(反引号就是这样做的)。
  • @JordanRunning 想要的结果是 obj 在语法上是正确的,我可以访问 obj.book 来检索字符串。
  • 你也可以在里面存储base64编码的字符串,然后在需要读取的时候解码。
  • 如果您真的想要这样的字符串,只需执行obj = {book: JSON.stringify(this.book)};,但我会检查您为什么这样做。当然,这将使您获得this.book 上的所有属性。

标签: javascript ecmascript-6


【解决方案1】:

您的问题不是很清楚,但您想要的似乎是这样的:

this.book = { title: 'This is a "book"' };

const obj = { book: JSON.stringify({ title: this.book.title }) };

console.log(obj); // <- this is an object
console.log(obj.book); // <- this is a string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多