取得文件扩展名

作者: 恬雅过客 | 来源:发表于2018-08-20 16:54 被阅读24次

原文出处:取得文件扩展名

问题 1: 怎样取得文件扩展名?

var file1 = "50.xsl";
var file2 = "30.doc";
getFileExtension(file1); //returs xsl
getFileExtension(file2); //returs doc

function getFileExtension(filename) {
  /*TODO*/
}

解决方法 1: 正则表达式

function getFileExtension1(filename) {
  return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename)[0] : undefined;
}

解决方法 2: String的split方法

function getFileExtension2(filename) {
  return filename.split('.').pop();
}

这两种解决方法不能解决一些边缘情况,这有另一个更加强大的解决方法。

解决方法 3: String的slicelastIndexOf方法

function getFileExtension3(filename) {
  return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2);
}

console.log(getFileExtension3(''));                            // ''
console.log(getFileExtension3('filename'));                    // ''
console.log(getFileExtension3('filename.txt'));                // 'txt'
console.log(getFileExtension3('.hiddenfile'));                 // ''
console.log(getFileExtension3('filename.with.many.dots.ext')); // 'ext'

这是如何实现的呢?

  • String.lastIndexOf() 方法返回指定值(本例中的'.')在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。
  • 对于'filename''.hiddenfile'lastIndexOf的返回值分别为0-1无符号右移操作符(»>)-1转换为4294967295,将-2转换为4294967294,这个方法可以保证边缘情况时文件名不变。
  • String.prototype.slice() 从上面计算的索引处提取文件的扩展名。如果索引比文件名的长度大,结果为""

对比

获取文件名对比图.png

实例与性能

这里 是上面解决方法的实例。

这里 是上面三种解决方法的性能测试。

来源

How can I get file extensions with JavaScript

相关文章

  • 取得文件扩展名

    原文出处:取得文件扩展名 问题 1: 怎样取得文件扩展名? 解决方法 1: 正则表达式 解决方法 2: Strin...

  • html+css 环境搭建

    开发环境的准备 显示文件扩展名 大部分文件,他的文件名:名称.扩展名(后缀名)扩展名决定了被什么应用程序打开,扩展...

  • NO.2 Java编写时的常报错类型

    1、找不到文件(错误提示:找不到文件):文件扩展名隐藏导致编译失败(修改文件名时把“文件扩展名”的钩上,这样在修改...

  • Ps—用“打开为”命令打开文件(22)

    用“打开为”命令打开文件 如果使用与文件的实际格式不匹配的扩展名存储文件(如用扩展名,gif存储PSD文件),或者...

  • 【翻译】Command Go (下)

    File types(文件类型) go命令检查目录中特定文件的集合。它根据文件的扩展名表示要检查的文件。这些扩展名...

  • 开发前的准备(Mac)

    显示所有文件扩展名 Finder->偏好设置(command+,)->高级->显示所有文件扩展名 下载JDK JD...

  • 转载:centos下解压

    1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩展名的文件: #uncompress fi...

  • 关于yml格式类型文件及YAML的一些资源

    在drupal中用了大量yml扩展名的配置文件,这是因为symfony采用了这样的配置文件,yml文件扩展名是YA...

  • Linux59期day10

    文件类型: 扩展名:.avi .txt .log .shWindows:系统根据不同的扩展名,区分不...

  • RN 代码规范说明

    一 文件与组件命名 扩展名: 使用.js作为js文件的扩展名。如果同一个文件夹下有同名而不同作用的js文件,则通过...

网友评论

    本文标题:取得文件扩展名

    本文链接:https://www.haomeiwen.com/subject/wcmliftx.html