我想用反斜杠替换字符串中未转义的斜杠。但奇怪的事情发生了:
"\content\hs\gj\home.css".replace(/\\/gi,"/")
返回“contenthsgjhome.css”。我明白如果将其改为
"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`
然后它将按预期工作,但我无法更改字符串,因为它只是nodejs path.join("conetnt", "hs", "gj", "home.css")
的输出。
我应该做什么?
答案 0 :(得分:6)
它返回"contenthsgjhome.css"
的原因是你的字符串根本没有任何反斜杠,因为字符串文字中的单个反斜杠将被忽略,除非它们有意义转义后续字符(例如, "\\"
或"\n"
)。 "\c"
没有特殊含义作为转义,因此它被解释为"c"
。
"\content\hs\gj\home.css"
结束与:
相同"contenthsgjhome.css"
因此.replace()
找不到反斜杠。
(注意,如果你做已经转义了像"\\"
这样的字符串文字中的反斜杠,它只是文字语法的一部分,一旦解释,结果字符串只有一个反斜杠{{1 }}。)
也许如果你能解释你所说的“只是FS的输出”,有人可以提供更多的建议。当JSP / ASP / PHP / etc输出JS代码时,这是一个常见的问题 - 在JS解释器看到它之前需要在JSP / ASP / PHP / etc代码中进行转义。
答案 1 :(得分:0)
yourstring.split(String.fromCharCode(92)).join('/')