对于一个带绝对路径的文件名如:D:\Program Files\Notepad++\Notepad++.exe 首先为了避免转义反斜杠出问题,可以用正则表达式来将或\替换成#,如: D:#Program Files#Notepad++#Notepad++.exe 之后以‘#'为分隔符,将字符串分解成数组,得到如下数组: D: ProgramFiles Notepad++ Notepad++.exe 取数组的最后一个即为带后缀的文件名:Notepad++.exe 再以‘.'为分隔符,将这个带后缀的文件名分解成数组,得到如下数组: Notepad++ exe 然后再取数组的最后一个就可以得到文件的后缀名exe了 代码如下(Win7+IE9测试通过):
//by MoreWindows (http://www.jb51.net/qq) function GetExtensionFileName(pathfilename) { var reg = /(\\+)/g; var pfn = pathfilename.replace(reg, "#"); var arrpfn = pfn.split("#"); var fn = arrpfn[arrpfn.length - 1]; var arrfn = fn.split("."); return arrfn[arrfn.length - 1]; } //by MoreWindows (http://www.jb51.net/qq) function GetExtensionFileName(pathfilename) { var reg = /(\\+)/g; var pfn = pathfilename.replace(reg, "#"); var arrpfn = pfn.split("#"); var fn = arrpfn[arrpfn.length - 1]; var arrfn = fn.split("."); return arrfn[arrfn.length - 1]; }
测试代码:
function Test() { var filePath="D:\\Program Files\\Notepad++\\Notepad++.exe"; alert(GetExtensionFileName(filePath)); } function Test() { var filePath="D:\\Program Files\\Notepad++\\Notepad++.exe"; alert(GetExtensionFileName(filePath)); }
点击Test按钮就可以弹出内容为exe的对话框,表示GetExtensionFileName能正确解析带绝对路径的文件名并得到后缀名。
估计这种方法只能在Windows平台下使用吧,在Linux执行下不知道会如何?
Stellungnahme: Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn