如何使用JavaScript获取文件扩展名?
2022-08-29 22:38:29
查看代码:
var file1 = "50.xsl";
var file2 = "30.doc";
getFileExtension(file1); //returns xsl
getFileExtension(file2); //returns doc
function getFileExtension(filename) {
/*TODO*/
}
查看代码:
var file1 = "50.xsl";
var file2 = "30.doc";
getFileExtension(file1); //returns xsl
getFileExtension(file2); //returns doc
function getFileExtension(filename) {
/*TODO*/
}
较新的编辑:自从这个问题最初发布以来,很多事情都发生了变化 - Wallacer的修订答案以及VisioN的出色分解中有很多非常好的信息
编辑:仅仅因为这是公认的答案;华莱士的答案确实好多了:
return filename.split('.').pop();
我的旧答案:
return /[^.]+$/.exec(filename);
应该这样做。
编辑:为了回应PhiLho的评论,请使用如下内容:
return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename) : undefined;
return filename.split('.').pop();
编辑:
这是另一个我认为更有效的非正则表达式解决方案:
return filename.substring(filename.lastIndexOf('.')+1, filename.length) || filename;
VisioN下面的答案可以更好地处理一些角落情况,特别是没有扩展名的文件(包括等)。.htaccess
它的性能非常高,并且当点之前没有点或没有字符串时,通过返回而不是完整字符串,以可以说更好的方式处理角落情况。这是一个精心设计的解决方案,尽管很难阅读。把它贴在你的助手库中,然后使用它。""
旧编辑:
如果您要遇到没有扩展名的文件或没有扩展名的隐藏文件(请参阅上面VisioN对Tom的答案的评论),则更安全的实现将沿着这些路线
var a = filename.split(".");
if( a.length === 1 || ( a[0] === "" && a.length === 2 ) ) {
return "";
}
return a.pop(); // feel free to tack .toLowerCase() here if you want
如果是一个,它是一个没有扩展名的可见文件,即。文件a.length
如果 和 它是一个没有扩展名的隐藏文件,即。.htaccessa[0] === ""
a.length === 2
这应该可以解决稍微复杂一些的案件的问题。在性能方面,我认为这个解决方案在大多数浏览器中都比正则表达式慢一点。但是,对于大多数常见目的,此代码应该完全可用。