高效的获取文件的扩展名
2020-09-18 本文已影响0人
ikonan
一: 正则表达式
var file1 = 'filename.xsl';
var file2 = '.hidefile';
var file3 = 'filename';
var file4 = 'filename.xx.apk';
function getFileExtension(filename) {
return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined;
}
console.log('>>>:', getFileExtension(file1)); // >>>: xsl
console.log('>>>:', getFileExtension(file2)); // >>>: hidefile
console.log('>>>:', getFileExtension(file3)); // >>>: undefine
console.log('>>>:', getFileExtension(file4)); // >>>: apk
二: 正则表达式
var file1 = 'filename.xsl';
var file2 = '.hidefile';
var file3 = 'filename';
var file4 = 'filename.xx.apk';
function getFileExtension(filename) {
return filename.split('.').pop();
}
console.log('>>>:', getFileExtension(file1)); // >>>: xsl
console.log('>>>:', getFileExtension(file2)); // >>>: hidefile
console.log('>>>:', getFileExtension(file3)); // >>>: filename
console.log('>>>:', getFileExtension(file4)); // >>>: apk
四: String的slice、lastIndexOf方法
var file1 = 'filename.xsl';
var file2 = '.hidefile';
var file3 = 'filename';
var file4 = 'filename.xx.apk';
function getFileExtension(filename) {
return filename.slice(((filename.lastIndexOf('.') - 1) >>> 0) + 2);
}
console.log('>>>:', getFileExtension(file1)); // >>>: xsl
console.log('>>>:', getFileExtension(file2)); // >>>:
console.log('>>>:', getFileExtension(file3)); // >>>:
console.log('>>>:', getFileExtension(file4)); // >>>: apk
这是如何实现的呢?
-
String.lastIndexOf() 方法返回指定值(本例中的
'.'
)在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。 - 对于
'filename'
和'.hiddenfile'
,lastIndexOf
的返回值分别为0
和-1
无符号右移操作符(»>) 将-1
转换为4294967295
,将-2
转换为4294967294
,这个方法可以保证边缘情况时文件名不变。 -
String.prototype.slice() 从上面计算的索引处提取文件的扩展名。如果索引比文件名的长度大,结果为
""
。