Javascript替换未转义的斜杠

我想用带反斜杠的字符串替换未转义的斜杠。但是奇怪的事情发生了:

"\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
额外 编辑
意见: 1
你怎么真的得到你的字符串?看看这篇文章,你的字符串应该是不可能的,如果你不用JavaScript来产生它: stackoverflow.com/questions/2479309/…
额外 作者 snies,

2 答案

它返回“contenthsgjhome.css”的原因是你的字符串根本没有任何反斜杠,因为字符串中的单个反斜杠将被忽略,除非它们有意义地逃避下面的事情字符(例如,“\\”“\ n”)。 “\ c”作为转义没有特殊意义,所以它被解释为“c”

"\content\hs\gj\home.css"

结束如下:

"contenthsgjhome.css"

因此, .replace()找不到反斜杠。

(请注意,如果您的 do 已在字符串文字(如“\\”)中作为文字语法的一部分转义反斜杠,并且解释结果字符串只有一个反斜杠<�代码> “\”</代码>)。

也许如果你能解释你的意思是“这只是FS的产出”,那么有人可以提供更多的建议。当JSP/ASP/PHP/etc输出JS代码时这是一个常见问题 - 在JS解释器看到它之前,需要在JSP/ASP/PHP/etc代码中进行转义。

6
额外
谢谢,字符串实际上来自nodejs path.join(“conetnt”,“hs”,“gj”,“home.css”)
额外 作者 iNc0ming,
nnnnnn,谢谢你的建议。我使用[“conetnt”,“hs”,“gj”,“home.css”],join(“/”)来解决它。现在问题解决了!
额外 作者 iNc0ming,
所以它在一个变量中,而不是在字符串文字中?请更新您的问题,以确切显示您如何使用 path.join(“conetnt”,“hs”,“gj”,“home.css”)的输出。 path.join() doco 中的示例输出似乎加入了正斜杠,而不是反斜杠。如果您在nodejs下运行代码以生成发送到浏览器的输出,则需要直接在nodejs代码中进行转义,而不是在浏览器中进行转义。
额外 作者 nnnnnn,
确切地说,你的字符串应该用双重斜线定义:'\\ content \\ hs \\ gj \\ home.css'
额外 作者 drinchev,
yourstring.split(String.fromCharCode(92)).join('/')
0
额外