【发布时间】:2020-11-21 01:57:22
【问题描述】:
我有一个包含反斜杠的字符串:
"{ \time 4/4 \key c \major d'4 }"
当我尝试在 nodejs child_process 中传递它或只是为了 console.log 它时, 反斜杠被删除:
console.log("{ \time 4/4 \key c \major d'4 }");
// "{ ime 4/4 key c major d'4 }"
我已经尝试了所有能找到的方法,例如 .replace(/\\/g, '\\') 或 JSON.stringify,但似乎没有任何效果。
字符串是动态构造的,所以我无法手动转义。
有什么想法吗?
cmets 后更新:
我使用node-python从一个用python (python-mingus) 编写的库中获取这个字符串。
据我从答案和 cmets 中了解到,如果不更改库或包装器,就无法正确解析字符串...
谢谢大家。
【问题讨论】:
-
"{ \\time 4/4 \\key c \\major d'4 }"工作正常。您需要在 将数据放入 javascript 之前转义。你从哪里得到的? -
“动态构造”到底是怎么回事,为什么会有斜线?如果它是字符串文字,则斜杠可能已被解析器删除。
-
二字串文字
\m只表示一字串值。 JavaScript 只能作用于字符串值,而不是字符串文字。您不妨要求在数字文字10e2中保留e。你不能;该文字表示值1000,并且该值没有e。同样,文字\m表示值m,并且该值没有反斜杠。 -
如果文字不正确,您将无法修复字符串。斜杠被视为转义序列,并且在它成为内存中的值时已经被丢弃。您必须修复“动态构造”。
-
希望反斜杠并不重要,因为在 javascript 解析器消化它们时它们已经消失了。
标签: javascript