我想用反斜杠替换字符串中的未转义斜杠。但奇怪的事情发生了:
"\content\hs\gj\home.css".replace(/\\/gi,"/")
返回“contenthsgjhome.css”。我明白如果将其更改为
"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`
然后它将按预期工作,但我无法更改字符串,因为它只是 nodejs path.join("conetnt", "hs", "gj", "home.css") 的输出
。
我应该做什么?
最佳答案
它返回 "contenthsgjhome.css"
的原因是您的字符串中根本没有任何反斜杠,因为字符串文字中的单个反斜杠将被忽略,除非它们可以转义后面的字符(例如 "\\"
或 "\n"
)。 "\c"
作为转义符没有特殊含义,因此它被解释为 "c"
。
"\content\hs\gj\home.css"
最终结果相同:
"contenthsgjhome.css"
因此 .replace()
找不到反斜杠。
(请注意,如果您确实在像 "\\"
这样的字符串文字中转义了反斜杠,它只是文字语法的一部分,并且一旦解释,结果字符串就只有一个反斜杠 "\"
。)
也许如果你能解释一下“这只是 FS 的输出”的意思,有人可以提供更多建议。这是 JSP/ASP/PHP/etc 输出 JS 代码时的常见问题 - 在 JS 解释器看到它之前,需要在 JSP/ASP/PHP/etc 代码中进行转义。
关于Javascript 替换未转义的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749461/