【问题标题】:Replace double backslashes with a single backslash in javascript在javascript中用单个反斜杠替换双反斜杠
【发布时间】:2014-10-07 21:04:59
【问题描述】:

我有以下问题:

我有一个向服务器执行 AJAX 请求的脚本,服务器在预览中返回 C:\backup\。但是,响应是"C:\\backup\\"。没什么大不了的,因为我只是想用单斜杠替换双斜杠。我一直在堆栈上环顾四周,但我只能找到如何用双反斜杠替换单反斜杠,但我需要它的另一种方式。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: javascript ajax replace backslash


    【解决方案1】:

    应该这样做:"C:\\backup\\".replace(/\\\\/g, '\\')

    在正则表达式中,单个\ 必须转义为\\,在替换\ 中也是如此。

    [edit 2021] 使用template literals 可能会更好。

    console.log(`original solution ${"C:\\backup\\".replace(/\\\\/g, '\\')}`)
    
    // a template literal will automagically replace \\ with \
    console.log(`template string without further ado ${`C:\\backup\\`}`);
    
    // but if they are escaped themselves
    console.log(`Double escaped ${`C:\\\\backup\\\\`.replace(/\\\\/g, '\\')}`);
    
    // don't want to replace the second \\
    console.log(`not the second ${`C:\\\\backup\\\\`.replace(/\\\\/, '\\')}`);
    
    // don't want to replace the first \\
    console.log(`not the first ${`C:\\\\backup\\`.replace(/[\\]$/, '\\')}`);

    【讨论】:

    • 很高兴能帮上忙 (niks te danken;)
    • 这也将删除任何单斜杠 'ab\cd' --> abcd
    • 我在原始正则表达式中有双反斜杠,当转义时归结为四个反斜杠。现在,当我尝试您的正则表达式时,它将这四个反斜杠转换为单个反斜杠而不是双反斜杠。我能做些什么来预防它?
    • @codemirror 你不需要任何替换:字符串ab\cd 本身不会包含斜杠,(\c = (escape)c)。在开发者控制台中尝试console.log("ab\cd")
    【解决方案2】:

    最好是使用正则表达式替换所有出现:

    C:\\backup\\".replace(/\/\//g, "/")
    

    返回:C:\backup\

    使用拆分()

    "C:\\backup\\".split();
    

    两者都会产生您想要的结果

    C:\备份\

    console.log("using \"C:\\backup\\\".replace(/\/\//g, \"/\")")
    console.log("C:\\backup\\".replace(/\/\//g, "/"));
    
    console.log("Using \"C:\\backup\\\".split()");
    console.log("C:\\backup\\".split());

    【讨论】:

    • 只是想注意这将适用于正斜杠但不适用于反斜杠
    • 这也将删除任何单斜杠 'ab\cd' --> abcd
    • @codemirror 好点。但是如果它包含 '\' 那么你不会看到它是 'ab\cd' 你会在代码中得到 'ab\\cd'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多