【问题标题】:Javascript replace unescaped slashJavascript替换未转义的斜杠
【发布时间】:2012-05-31 17:50:59
【问题描述】:

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

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

返回“contenthsgjhome.css”。我知道如果将其更改为

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

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

我该怎么办?

【问题讨论】:

标签: javascript regex node.js replace


【解决方案1】:
yourstring.split(String.fromCharCode(92)).join('/')

【讨论】:

    【解决方案2】:

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

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

    结果与以下相同:

    "contenthsgjhome.css"
    

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

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

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

    【讨论】:

    • 没错,你的字符串应该用双斜线定义:'\\content\\hs\\gj\\home.css'
    • 谢谢,字符串实际上来自nodejs path.join("conetnt", "hs", "gj", "home.css")
    • 所以它在变量中,而不是在字符串文字中?请更新您的问题以准确显示您如何使用来自path.join("conetnt", "hs", "gj", "home.css") 的输出。 path.join() doco 中的示例输出似乎加入了正斜杠,而不是反斜杠。如果您在 nodejs 下运行产生发送到浏览器的输出的代码,您需要直接在 nodejs 代码中进行转义,而不是在浏览器中。
    • nnnnnn,感谢您的建议。我通过使用 ["conetnt", "hs", "gj", "home.css"].join("/") 来解决它。现在问题解决了!
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2023-03-16
    • 2019-06-05
    • 2012-05-17
    相关资源
    最近更新 更多