jQuery查找文件扩展名(来自字符串)

Sou*_*aby 29 jquery file

我想知道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中有它.

  • 哈哈,我几乎发表了评论,然后我想嗯......也许我不理解某事.+1很棒的答案 (3认同)

Dou*_*ner 71

要获取文件扩展名,我会这样做:

var ext = file.split('.').pop();
Run Code Online (Sandbox Code Playgroud)

  • +1 - 获得扩展的更好方法.希望我能想到它! (4认同)

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)

  • +1用于添加`.toLowerCase()`。可能很重要。 (2认同)

rah*_*hul 9

您可以使用substringlastIndexOf的组合

样品

var fileName = "test.jpg";
var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1); 
Run Code Online (Sandbox Code Playgroud)