如何转换字符串
This:
file:///C://Program%20Files//Microsoft%20Office//OFFICE11//EXCEL.EXE
To this:
C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE
答案 0 :(得分:3)
这样的事情可以解决问题:
function getPath(url) {
return decodeURIComponent(url).replace("file:///","").replace(/\//g,"\\");
}
答案 1 :(得分:2)
Unescape,替换file:///
并替换//
。
// if you face problems with IE use `unescape` instead.
var d = decodeURIComponent("file:///C://Program%20Files//Microsoft%20Office//OFFICE11//EXCEL.EXE")
d = d.replace(/file:\/\/\//i, "").replace(/\/\//g, "\\\\");
返回
"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"
使用单个反斜杠
d = d.replace(/file:\/\/\//i, "").replace(/\/\//g, "\\");
结果是
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
答案 2 :(得分:0)
此解决方案避免了不必要的替换:
var input = "file:///C://Program%20Files//Microsoft%20Office//OFFICE11//EXCEL.EXE";
// Remove file:///
if (input.length > 8 && input.substr(0, 8) == "file:///")
input = input.substr(8);
input = decodeURIComponent(input).replace(/\/\//g, "\\\\"));
答案 3 :(得分:0)
使用decodeURIComponent
修复%20
和类似的网址转义字符。然后简单地对路径名进行子串(在字符串位置8之后),并使用split / join将//
替换为\\
。
...或
var original = "file:///C://Program%20Files//Microsoft%20Office//OFFICE11//EXCEL.EXE ";
var fixed = decodeURIComponent(original.substr(8)).split('//').join('\\');
您可以使用替换而不是分割/连接。