高效的获取文件的扩展名

一: 正则表达式 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() 从上面计算的索引处提取文件的扩展名。如果索引比文件名的长度大,结果为""。

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):