我在Chrome扩展程序中将文件保存到用户的硬盘驱动器中,我需要一种方法以编程方式在chrome浏览器中打开文件。我可以使用chrome tabs API来创建选项卡并设置其URL。问题是文件的文件系统地址。
Chrome会将文件名中的特殊字符切换为其他表达式,例如空格变为%20。
为了解决这个问题,我想在保存之前解析文件名,删除会导致这些网址损坏的字符。
我无法弄清楚RegEx是否正确解析文件名。
有两件事可以帮助我:
在Chrome中打开网址时,会在网址中导致这些损坏的所有特殊字符的列表。
甚至更好,一个即时解决方案,来自RegEx的帮助,我可以使用javascript replace method将每个“/”替换为“\”,以及其他每个不是a的字符字母或数字(或我刚刚添加的“\”)和“_”
编辑:
如果我没有考虑字符串的这些更改,我将无法在chrome选项卡中打开文件。例如,以下代码将不起作用。
chrome.browserAction.onClicked.addListener( function(tab) {
chrome.tabs.create({ url: 'file:///home/user/1057_AngularJS: Developer Guide: Directives.mhtml'}, function(tab) {
});
});
我需要这样做:
chrome.browserAction.onClicked.addListener( function(tab) {
chrome.tabs.create({ url: 'file:///home/user/1057%5CAngularJS:%20Developer%20Guide:%20Directives.mhtml'}, function(tab) {
});
});`
我想用/ s替换/ s,以便文件系统网址尽可能与网页网址类似,但如果这会导致问题,我可以放弃。
答案 0 :(得分:1)
我可以使用的RegEx帮助的即时解决方案 javascript&替换方法来替换每个" /"用" \"和每一个 其他不是字母或数字的字符(或者#34; \"我 刚刚添加了" _"
你在这里:
'Hello/你 好/1337'.replace(/\//g, '\\').replace(/[^a-zA-Z0-9\\]/g, '_');
输出:
'Hello\___\1337'
答案 1 :(得分:0)
我最终使用.replace(/[^a-zA-Z0-9\.]/g, '_')
,或者没有用/替换/,因为\'也被编码为特殊字符。我还想将句点保留在文件名中。要查看已编码的完整字符列表,请转到here。