【发布时间】:2014-10-07 21:04:59
【问题描述】:
我有以下问题:
我有一个向服务器执行 AJAX 请求的脚本,服务器在预览中返回 C:\backup\。但是,响应是"C:\\backup\\"。没什么大不了的,因为我只是想用单斜杠替换双斜杠。我一直在堆栈上环顾四周,但我只能找到如何用双反斜杠替换单反斜杠,但我需要它的另一种方式。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: javascript ajax replace backslash
我有以下问题:
我有一个向服务器执行 AJAX 请求的脚本,服务器在预览中返回 C:\backup\。但是,响应是"C:\\backup\\"。没什么大不了的,因为我只是想用单斜杠替换双斜杠。我一直在堆栈上环顾四周,但我只能找到如何用双反斜杠替换单反斜杠,但我需要它的另一种方式。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: javascript ajax replace backslash
应该这样做:"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(/[\\]$/, '\\')}`);
【讨论】:
ab\cd 本身不会包含斜杠,(\c = (escape)c)。在开发者控制台中尝试console.log("ab\cd")。
最好是使用正则表达式替换所有出现:
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());
【讨论】: