0

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

"\content\hs\gj\home.css".replace(/\\/gi,"/")

返回“contenthsgjhome.css”。我明白,如果将其更改为

"\\content\\hs\\gj\\home.css".replace(/\\/gi,"/")`

然后它将按预期工作,但我无法更改字符串,因为它只是 nodejs 的输出path.join("conetnt", "hs", "gj", "home.css")

我该做什么?

4

2 回答 2

6

它返回的原因是"contenthsgjhome.css"您的字符串中根本没有任何反斜杠,因为字符串文字中的单个反斜杠将被忽略,除非它们对转义以下字符有意义(例如,"\\""\n")。"\c"作为转义没有特殊含义,因此它被解释为"c".

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

结束与以下内容相同:

"contenthsgjhome.css"

所以没有反斜杠可供.replace()查找。

(请注意,如果您确实在字符串文字中转义了反斜杠,那么"\\"这只是文字语法的一部分,并且一旦被解释,结果字符串只有一个反斜杠"\"。)

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

于 2012-05-25T06:34:01.093 回答
0
yourstring.split(String.fromCharCode(92)).join('/')
于 2016-09-26T18:38:14.237 回答