We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
var file1 = "50.xsl"; var file2 = "30.doc"; getFileExtension(file1); //returs xsl getFileExtension(file2); //returs doc function getFileExtension(filename) { /*TODO*/ }
function getFileExtension1(filename) { return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename)[0] : undefined; }
split
function getFileExtension2(filename) { return filename.split('.').pop(); }
这两种解决方法不能解决一些边缘情况,这有另一个更加强大的解决方法。
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'
这是如何实现的呢?
'.'
'filename'
'.hiddenfile'
0
-1
4294967295
-2
4294967294
""
这里 是上面解决方法的实例。
这里 是上面三种解决方法的性能测试。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
📚在线阅读:Js 取得文件扩展名 - No.53
问题 1: 怎样取得文件扩展名?
解决方法 1: 正则表达式
解决方法 2: String的
split
方法这两种解决方法不能解决一些边缘情况,这有另一个更加强大的解决方法。
解决方法 3: String的
slice
、lastIndexOf
方法这是如何实现的呢?
'.'
)在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。'filename'
和'.hiddenfile'
,lastIndexOf
的返回值分别为0
和-1
无符号右移操作符(>>>) 将-1
转换为4294967295
,将-2
转换为4294967294
,这个方法可以保证边缘情况时文件名不变。""
。对比
'filename'
'filename.txt'
'.hiddenfile'
'filename.with.many.dots.ext'
undefined
'txt'
'hiddenfile'
'ext'
split
'filename'
'filename.txt'
'.hiddenfile'
'filename.with.many.dots.ext'
'filename'
'txt'
'hiddenfile'
'ext'
slice
,lastIndexOf
'filename'
'filename.txt'
'.hiddenfile'
'filename.with.many.dots.ext'
''
'txt'
''
'ext'
实例与性能
这里 是上面解决方法的实例。
这里 是上面三种解决方法的性能测试。
扩展阅读:
The text was updated successfully, but these errors were encountered: