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 want
a.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"
添加回答
举报