js字符串,取得文件扩展名
解决方法 1: 正则表达式
function getFileExtension1(filename) {
return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename)[0] : undefined;
}
解决方法 2: String的split
方法
function getFileExtension2(filename) {
return filename.split('.').pop();
}
这两种解决方法不能解决一些边缘情况,这有另一个更加强大的解决方法。
解决方法 3: String的slice
、lastIndexOf
方法
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() 从上面计算的索引处提取文件的扩展名。如果索引比文件名的长度大,结果为
""
。
对比
解决方法 | 参数 | 结果 |
---|---|---|
解决方法 1: Regular Expression | ’‘ ‘filename’ ‘filename.txt’ ‘.hiddenfile’ ‘filename.with.many.dots.ext’ |
undefined undefined ‘txt’ ‘hiddenfile’ ‘ext’ |
解决方法 2: String split |
’‘ ‘filename’ ‘filename.txt’ ‘.hiddenfile’ ‘filename.with.many.dots.ext’ |
’’ ‘filename’ ‘txt’ ‘hiddenfile’ ‘ext’ |
解决方法 3: String slice , lastIndexOf |
’‘ ‘filename’ ‘filename.txt’ ‘.hiddenfile’ ‘filename.with.many.dots.ext’ |
’’ ‘’ ‘txt’ ‘’ ‘ext’ |
实例与性能
这里 是上面解决方法的实例。
这里 是上面三种解决方法的性能测试。
https://www.jstips.co/zh_cn/javascript/get-file-extension/
分类:
javascript
, utils工具方法汇总
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求