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

时间:2015-05-26 18:51:27

标签: javascript

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

"{ \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)编写的库中获取此字符串。

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

谢谢大家。

3 个答案:

答案 0 :(得分:5)

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

\是转义字符,\t\k\m在解析时被视为转义序列 (和不是在印刷时,正如你似乎认为的那样)。它们甚至从未到达replace,因为它们在运行时不再存在。此外,对于无法识别的序列(\k\m),只会忽略反斜杠。

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

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

答案 1 :(得分:2)

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

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

这样您就可以保留斜线。

答案 2 :(得分:0)

有趣的是,如果您在HTML文本输入框中输入字符$$ \sum \theta $$,则javascript会将它们拾取并传递给它们,甚至console.log也会将它们输出不变。

var TextSource = document.getElementById( "myHTMLTextInputBox" );
var labelStr = TextSource.value;
console.log ("Obtained text = ", labelStr);

同样,您可以像这样在HTML DIV的定义中键入相同的字符序列:-

<div id="anne" name="bob" class="carla" title ="tommy"> $$ \sum \theta $$ </div>    

(我想知道如何通过解析来解释这些过程吗?)