我想知道jQuery是否有可能根据返回的字符串找到文件扩展名?
文件名(字符串)将被传递给一个函数(openFile),我希望该函数根据传递的文件做不同的事情,它可以是图像文件或pdf文件.
function openFile(file) {
//if .jpg/.gif/.png do something
//if .zip/.rar do something else
//if .pdf do something else
};
Run Code Online (Sandbox Code Playgroud)
我一直在寻找能够找到文件扩展名的东西,但我似乎无法找到任何东西.
use*_*716 79
这样的事情怎么样?
测试实例: http ://jsfiddle.net/6hBZU/1/
它假定字符串将始终以扩展名结尾:
function openFile(file) {
var extension = file.substr( (file.lastIndexOf('.') +1) );
switch(extension) {
case 'jpg':
case 'png':
case 'gif':
alert('was jpg png gif'); // There's was a typo in the example where
break; // the alert ended with pdf instead of gif.
case 'zip':
case 'rar':
alert('was zip rar');
break;
case 'pdf':
alert('was pdf');
break;
default:
alert('who knows');
}
};
openFile("somestring.png");
Run Code Online (Sandbox Code Playgroud)
编辑:我错误地删除了部分字符串openFile("somestring.png");.纠正.但是在Live Example中有它.
Dou*_*ner 71
要获取文件扩展名,我会这样做:
var ext = file.split('.').pop();
Run Code Online (Sandbox Code Playgroud)
art*_*ung 14
另一种写作方式:
function getExtension(filename) {
return filename.split('.').pop().toLowerCase();
}
function openFile(file) {
switch(getExtension(file)) {
//if .jpg/.gif/.png do something
case 'jpg': case 'gif': case 'png':
/* handle */
break;
//if .zip/.rar do something else
case 'zip': case 'rar':
/* handle */
break;
//if .pdf do something else
case 'pdf':
/* handle */
break;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用substring和lastIndexOf的组合
样品
var fileName = "test.jpg";
var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);
Run Code Online (Sandbox Code Playgroud)