3 回答
TA贡献1865条经验 获得超7个赞
return filename.split('.').pop();编辑:
return filename.substring(filename.lastIndexOf('.')+1, filename.length) || filename;.htaccess
""
老编辑:
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 wanta.length
a[0] === ""a.length === 2
TA贡献1802条经验 获得超10个赞
return fname.slice((fname.lastIndexOf(".") - 1 >>> 0) + 2); return fname.slice((Math.max(0, fname.lastIndexOf(".")) || Infinity) + 1);.
"" --> "" "name" --> "" "name.txt" --> "txt" ".htpasswd" --> "" "name.with.many.dots.myext" --> "myext"
短的一个是如何工作的:
方法返回子字符串的最后一个位置(即 ".")在给定的字符串(即 fname)。如果没有找到子字符串,则方法返回 -1.文件名中点的“不可接受”位置是 -1和 0,分别指没有扩展的名称(例如: "name")和以点开头的名称(例如, ".htaccess").零填充右移位算子 (>>>)如果与零一起使用会影响负数转换 -1到 4294967295和 -2到 4294967294,这对于在边缘情况下保持文件名不变很有用(这里的技巧是这样的)。 从按描述计算的位置提取文件名的部分。如果位置号大于字符串方法的长度,则返回 "".
function getExtension(path) {
var basename = path.split(/[\\/]/).pop(), // extract file name from full path ...
// (supports `\\` and `/` separators)
pos = basename.lastIndexOf("."); // get last position of `.`
if (basename === "" || pos < 1) // if file name is empty or ...
return ""; // `.` not found (-1) or comes first (0)
return basename.slice(pos + 1); // extract extension ignoring `.`}console.log( getExtension("/path/to/file.ext") );
// >> "ext"添加回答
举报
