该怎么去获得文件名字符串中的文件扩展名呢?
一种较为强大的解决方法是利用String的slice、lastIndexOf方法:
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 |