日期:2014-05-16  浏览次数:20387 次

一道群友出的JS面试题:返回文件名的扩展名

以尽可能多的方法完成下面的函数,使之能够正确返回一个任意给定文件名的扩展名

        function getExtension(fileName){
                //请在此补充该函数



        }


        //函数用例1
        var fileName1 = "myPhoto.jpg";
        var extension1 = getExtension(fileName1);    // extension1 期望值 jpg


        //函数用例2
        var fileName2 = "my_project.latest.js";
        var extension2 = getExtension(fileName2);    // extension2 期望值 js

?

?

我给出的一些回答:

function getExtension(fileName){
        if(typeof(fileName)!="string") return "";
        var tmpArr = fileName.split(".");
        if(fileName=="" || tmpArr.length==1) return "";
        else return tmpArr.pop();
}

function getExtension1(fileName){
        if(typeof(fileName)!="string") return "";
        var reg = /\.(\w+)$/i; //匹配 .后面任意字符结尾(忽略大小写) 这个正则是请教 高人写的,我正则懂得少
        var tmpArr = reg.exec(fileName);
        if(tmpArr == null) return "";
        else return tmpArr[tmpArr.length-1];
}

function getExtension2(fileName){
        if(typeof(fileName)!="string") return "";
        return fileName.substring(fileName.lastIndexOf(".")+1,fileName.length);
}

alert(getExtension1("abc.ccc.js"));

?

?

也许这些不是全部的方法,只是把代码贴在这里,以作参考.

函数内的代码有些多是因为做了一些必要性的判断,防止不合乎格式的文件名字符串,应该可以单独提出来做一个函数,这样就没有必要每一个函数都来一次了.

?