高效的获取文件的扩展名

作者 : 开心源码 本文共1482个字,预计阅读时间需要4分钟 发布时间: 2022-05-13 共244人阅读

一: 正则表达式

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)); // >>>: xslconsole.log('>>>:', getFileExtension(file2)); // >>>: hidefileconsole.log('>>>:', getFileExtension(file3)); // >>>: undefineconsole.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)); // >>>: xslconsole.log('>>>:', getFileExtension(file2)); // >>>: hidefileconsole.log('>>>:', getFileExtension(file3)); // >>>: filenameconsole.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)); // >>>: xslconsole.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() 从上面计算的索引处提取文件的扩展名。假如索引比文件名的长度大,结果为""
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 高效的获取文件的扩展名

发表回复