看代码:
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*/
}
当前回答
我知道这是一个老问题,但我写了这个函数的测试提取文件扩展名,她可用的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]
}
您可以在这里看到我编写的测试。
其他回答
return filename.replace(/\.([a-zA-Z0-9]+)$/, "$1");
编辑:奇怪的是(或者可能不是)替换方法的第二个参数中的$1似乎不工作…对不起。
使用reduce和数组解构来获取文件名和扩展名:
Var STR = "filename.with_dot.png"; Var [filename, extension] = str.split('.')。Reduce ((acc, val, i, arr) => (i == arr。长度- 1)?(acc [0] .substring (1), val]: [[acc [0], val] . join ('.')], []) console.log({文件名,扩展});
有更好的缩进:
var str = "filename.with_dot.png";
var [filename, extension] = str.split('.')
.reduce((acc, val, i, arr) => (i == arr.length - 1)
? [acc[0].substring(1), val]
: [[acc[0], val].join('.')], [])
console.log({filename, extension});
// {
// "filename": "filename.with_dot",
// "extension": "png"
// }
试试这个:
function getFileExtension(filename) {
var fileinput = document.getElementById(filename);
if (!fileinput)
return "";
var filename = fileinput.value;
if (filename.length == 0)
return "";
var dot = filename.lastIndexOf(".");
if (dot == -1)
return "";
var extension = filename.substr(dot, filename.length);
return extension;
}
在node.js中,这可以通过以下代码实现:
var file1 ="50.xsl";
var path = require('path');
console.log(path.parse(file1).name);
更新编辑:自从这个问题最初发布以来,很多事情都发生了变化——wallacer修改后的答案中有很多非常好的信息,VisioN也有很好的细分
编辑:因为这是公认的答案;Wallacer的回答确实好得多:
return filename.split('.').pop();
我以前的回答是:
return /[^.]+$/.exec(filename);
应该这么做。
编辑:在回应PhiLho的评论时,可以这样说:
return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename) : undefined;