高效的获取文件的扩展名

作者: ikonan | 来源:发表于2020-09-18 09:18 被阅读0次

    一: 正则表达式

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

    相关文章

      网友评论

        本文标题:高效的获取文件的扩展名

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