保留字符串中的所有反斜杠

问题描述 投票:2回答:2

我有一个包含反斜杠的字符串:

"{ \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,但似乎没有任何效果。

字符串是动态构造的,因此我无法手动转义它。

有任何想法吗?


评论后更新:

我使用python-mingus从python(node-python)编写的库中获取此字符串。

据我从答案和注释中理解,没有办法在不改变库或包装器的情况下正确解析字符串......

谢谢你们。

javascript
2个回答
5
投票

不,您的字符串不包含(文字)反斜杠。

\是一个转义字符,\t\k\m在解析时被视为转义序列(而不是在打印时,正如您所想的那样)。他们甚至都没有到达你的replace,因为它们在运行时不再存在。此外,对于无法识别的序列(\k\m),反斜杠被简单地忽略。

防止这种情况的唯一方法是在源代码中添加一个额外的反斜杠:

"{ \\time 4/4 \\key c \\major d'4 }"

2
投票

您可以使用String.raw作为保存包含斜杠的字符串的替代方法;对他来说,你必须把你的字符串放在严重的符号(`)之间,如下所示:

var path = String.raw`your\string\with\slash`;

这样你就可以保留斜线。

© www.soinside.com 2019 - 2024. All rights reserved.