❤️

ARCHAI

Undergraduate / Rookie

Back

获取文件扩展名

该怎么去获得文件名字符串中的文件扩展名呢?

一种较为强大的解决方法是利用String的slicelastIndexOf方法:

function getFileExtension(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('hiddenfile.'));                 // ''
console.log(getFileExtension3('filename.with.many.dots.ext')); // 'ext'

说明

filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2)

本方法中的>>>运算目的是

找到最后一个.所在索引,然后索引-1+2,相当于+1,则slice方法返回.后面的后缀名

.不会再开头,否则索引会是0,因为-1>>>0 = 4294967295,所不会匹配到

.出现在末尾,索引会等于length+1,也不会匹配到

slice(start,end)

  • 说明:start必须指定,负值为从后往前数,若只指定start值,则返回start位置及后面一直到数组结尾所有的元素
  • **注意:**区别于删除数组中的一段元素的方法 Array.splice()

lastIndexOf(searchvalue,fromindex)

  • **说明:**如果要检索的字符串值没有出现,则该方法返回 -1,该方法对大小写敏感
  • 使用:
var str="Hello world!"
document.write(str.lastIndexOf("Hello") + "<br />")//0
document.write(str.lastIndexOf("World") + "<br />")//-1
document.write(str.lastIndexOf("world"))//6

位运算符

  • **说明:**在执行位运算之前,JavaScript 将数字转换为 32 位有符号整数。执行按位操作后,结果将转换回 64 位 JavaScript 数。

  • 使用:

操作 结果 等同于 结果
5 & 1 1 0101 & 0001 0001
5 | 1 5 0101 | 0001 0101
5 ^ 1 4 0101 ^ 0001 0100
~ 5 10 ~0101 1010
5 « 1 10 0101 « 1 1010
5 » 1 2 0101 » 1 0010
5 »> 1 2 0101 »> 1 0010
Archai
Built with Hugo
Theme Stack designed by Jimmy