看代码:
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*/
}
当前回答
function getFileExtension(filename)
{
var ext = /^.+\.([^.]+)$/.exec(filename);
return ext == null ? "" : ext[1];
}
测试了
"a.b" (=> "b")
"a" (=> "")
".hidden" (=> "")
"" (=> "")
null (=> "")
也
"a.b.c.d" (=> "d")
".a.b" (=> "b")
"a..b" (=> "b")
其他回答
我知道这是一个老问题,但我写了这个函数的测试提取文件扩展名,她可用的NPM, Yarn, Bit。 也许它会帮助别人。 https://bit.dev/joshk/jotils/get-file-extension
function getFileExtension(path: string): string {
var regexp = /\.([0-9a-z]+)(?:[\?#]|$)/i
var extension = path.match(regexp)
return extension && extension[1]
}
您可以在这里看到我编写的测试。
我已经晚了很多个月,但为了简单起见,我使用了这样的东西
var 文件名 = “I.Am.文件名.docx”; var nameLen = fileName.length; var lastDotPos = fileName.lastIndexOf(“.”); var 文件名子 = 假; if(lastDotPos === -1) { 文件名子 = 假; } 还 { 如果希望“.”也保留,请删除 +1 fileNameSub = fileName.substr(lastDotPos + 1, nameLen); } document.getElementById(“showInMe”).innerHTML = fileNameSub; <div id=“showInMe”></div>
Wallacer的回答很好,但还需要再检查一下。
如果文件没有扩展名,它将使用filename作为扩展名,这是不好的。
试试这个:
return ( filename.indexOf('.') > 0 ) ? filename.split('.').pop().toLowerCase() : 'undefined';
var file = "hello.txt";
var ext = (function(file, lio) {
return lio === -1 ? undefined : file.substring(lio+1);
})(file, file.lastIndexOf("."));
// hello.txt -> txt
// hello.dolly.txt -> txt
// hello -> undefined
// .hello -> hello
别忘了有些文件没有扩展名,所以:
var parts = filename.split('.');
return (parts.length > 1) ? parts.pop() : '';