从文件名获取扩展名,如变量-Javascript-jQuery [duplicate]

问题描述

||                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        就那么简单:
var ext = parts[parts.length - 1];
至于文件名:
var flename = parts.slice(0,parts.length - 1).join(\".\");
最后但并非最不重要的一点是,我还将在代码段之前验证ѭ2not不是空的以避免异常。 编辑:另一种更优雅的类似方法:
var ext = parts.splice(-1).join();
var flename = parts.join(\".\");
请注意,与第一种方法不同,这实际上将更改数组
parts
,因此以后不要使用它。     ,        只是为了获得一些替代方法,您也可以使用正则表达式提取它:
var full = \"filename.ext.txt\";

// Get all characters before the last dot
var filename = /.*(?=\\.)/.exec(full);

// Get the part without dots on the end
var extension = /[^\\.]*$/.exec(full);

// If there are no dots in the full name,filename will be empty and extension
// will contain the whole filename. Do some extra processing:
if(!filename){
    filename = full;
    extension = \'\';
}
    ,        
var ext = \'hibernate.cfg.xml\';

var index = ext.lastIndexOf(\'.\');// .xml

alert(ext.substring(index+1)); // xml
    ,        
var parts = file.split(\'.\'),ext = (parts.length > 1 ? parts.pop() : null),filename = parts.join(\'.\');
    ,        如果
file
始终至少包含一个点,则可以使用:
var ext = file.slice(file.lastIndexOf(\".\")+1);
var filename = file.slice(0,file.lastIndexOf(\".\"));
在更一般的情况下,
file
可能不包含点:
var ext = file.indexOf(\".\")<0?\"\":file.slice(file.lastIndexOf(\".\")+1);
var filename = file.indexOf(\".\")<0?file:file.slice(0,file.lastIndexOf(\".\"));
最后,仅出于漂亮代码的目的:
var lastDotIndex = file.lastIndexOf(\".\");

if (lastDotIndex == -1) {    // Handles the case where there is no dot in \"file\"

    var fileExtension = \"\";
    var fileNameWithoutExtension = file;

} else {    // Common case 

    var fileExtension = file.slice(lastDotIndex+1);
    var fileNameWithoutExtension = file.slice(0,lastDotIndex);

}
    ,        您已经获得了许多可行的解决方案,但是我认为我将为面向对象的解决方案做出贡献,这可能对更高级的场景很有用:
var File = function(fname){
    if (typeof fname === \"undefined\") {
        console.log(\"You need to pass a filename or path to file\");
        return false;
    }
    // Correct slashes
    fname = fname.replace(\"\\\\\",\"/\",fname);
    this.org = fname;
    if (fname.lastIndexOf(\"/\")) {
        this.path = fname.substr(0,fname.lastIndexOf(\"/\")+1);
        fname = fname.substr(fname.lastIndexOf(\"/\")+1);
    }
    this.ext = fname.substr(fname.lastIndexOf(\".\")+1);
    this.name = fname.substr(0,fname.lastIndexOf(\".\"));
}
然后,您可以执行以下操作:
var file = new File(\"/full/path/to/file/foo.bar.baz\");
现在,使用
file.name
file.ext
file.path
访问属性。