我有一个包含反斜杠的字符串:
"{ \time 4/4 \key c \major d'4 }"
Run Code Online (Sandbox Code Playgroud)
当我尝试在nodejs child_process中传递它或只是在console.log中传递它时,反斜杠被删除:
console.log("{ \time 4/4 \key c \major d'4 }");
// "{ ime 4/4 key c major d'4 }"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有可以找到的东西,例如.replace(/\\/g, '\\')或者JSON.stringify,但似乎没有任何效果.
字符串是动态构造的,因此我无法手动转义它.
有任何想法吗?
评论后更新:
我使用node-python从python(python-mingus)编写的库中获取此字符串.
据我从答案和注释中理解,没有办法在不改变库或包装器的情况下正确解析字符串......
谢谢你们.
小智 17
您可以使用 String.raw 作为保存包含斜杠的字符串的替代方法;对于他,您必须将字符串放在严重符号 (`) 之间,如下所示:
var path = String.raw`your\string\with\slash`;
Run Code Online (Sandbox Code Playgroud)
这样你就可以保留斜线。
不,您的字符串不包含(文字)反斜杠.
\是转义字符,并且\t,\k和\m被视为转义序列在解析时(而不是在印刷的时候,你似乎认为).他们甚至从未到过你,replace因为它们不再存在了.此外,对于无法识别的序列(\k和\m),反斜杠被简单地忽略.
防止这种情况的唯一方法是在源代码中添加一个额外的反斜杠:
"{ \\time 4/4 \\key c \\major d'4 }"
Run Code Online (Sandbox Code Playgroud)