[JavaScript] ファイルサイズを数値に直す関数
2 min read
ファイルサイズなどの数値を比較するとき、カンマとか単位とか付いていると非常に面倒です。
こんな感じ。
6B 102KB 2,500KB 800MB 2GB 1TB
上記のような文字列にある程度対応できるような関数を作ってみた。
ファイルサイズ変換関数
function fileSizeFormat(size) {
var s = size.split(",").join("");
var suf = ( (s.match(/(B|KB|MB|GB|TB)$/gi)||[])[0] || "B" ).toUpperCase();
var num = parseFloat(s.match(new RegExp(/^[0-9]+(\.[0-9]+)?/))[0]);
var mul = 1024;
switch (suf) {
case "B":
return num;
case "KB":
return num _ Math.pow(mul, 1);
case "MB":
return num _ Math.pow(mul, 2);
case "GB":
return num _ Math.pow(mul, 3);
case "TB":
return num _ Math.pow(mul, 4);
}
}
変な単位が来たときは B(バイト)にしています。あと、単位がない場合も B(バイト)とされます。
「SI 接頭辞」や「2 進接頭辞」に応じて1024は1000などに変えてください。
また、ペタバイト(PB)・エクサバイト(EB)…など増やしていく場合は、それぞれ正規表現とSwitch
に追加していってください。
使い方
var size = '2,048KB';
fileSizeFormat(size);
// => 2097152