[翻訳]ファイルの拡張子をより効果的に取得するにはどうすればいいですか?
2636 ワード
ファイルの拡張子はどうやって取得しますか?
方式3: String.lastIndexOfは、指定値の最後の出現位置を返します. パラメータが その後、String.prototype.sliceは、上記の計算結果を先頭に、元の文字列から正しいファイル拡張子を抽出した.前のステップで計算された開始アンダースケールが元の文字列長より大きい場合、 に戻る.
比較
シナリオ
パラメータ
結果
正規表現
''
undefined
'filename'
undefined
'filename.txt'
‘txt’
'.hiddenfile'
'hiddenfile'
'filename.with.many.dots.ext'
'ext'
''
'filename'
'filename'
'filename.txt'
‘txt’
'.hiddenfile'
'hiddenfile'
'filename.with.many.dots.ext'
'ext'
''
'filename'
''
'filename.txt'
‘txt’
'.hiddenfile'
''
'filename.with.many.dots.ext'
'ext'
オンラインプレゼンテーションとパフォーマンス
上記コードのオンラインインスタンス上の3つのスキームの性能テスト
ソース
JavaScriptでファイルの拡張子を取得すると
How to get the file etension more efficiently
var file1 = "50.xsl";
var file2 = "30.doc";
getFileExtension(file1); //xsl
getFileExtension(file2); //doc
function getFileExtension(filename) {
/*TODO*/
}
シナリオ一:正規表現function getFileExtension1(filename) {
return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename)[0] : undefined;
}
二: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'
この商品はどうやって働きますか?.
に戻ると、指定値が見つからなかったということです.-1
、filename
の場合、.hiddenfile
の戻り値はそれぞれlastIndexOf
、-1
である.その後、符号無しシフト操作器は0
を-2
、4294967294
に変換し、この小技術は極端な状況下で値を取っても異常がないことを保証します.-1
比較
シナリオ
パラメータ
結果
正規表現
''
undefined
'filename'
undefined
'filename.txt'
‘txt’
'.hiddenfile'
'hiddenfile'
'filename.with.many.dots.ext'
'ext'
4294967295
の''
''''
'filename'
'filename'
'filename.txt'
‘txt’
'.hiddenfile'
'hiddenfile'
'filename.with.many.dots.ext'
'ext'
String
のsplit
とString
''''
'filename'
''
'filename.txt'
‘txt’
'.hiddenfile'
''
'filename.with.many.dots.ext'
'ext'
オンラインプレゼンテーションとパフォーマンス
上記コードのオンラインインスタンス上の3つのスキームの性能テスト
ソース
JavaScriptでファイルの拡張子を取得すると
How to get the file etension more efficiently