[Javascript] 数値の桁数に「0」を付けて合わせるゼロパディング

2016年9月22日

Javascript テクノロジー プログラミング 学習

学校を卒業したらみんな社会人になりますが、基本的に社会人になるとビジネスマンになるはずです。 例外としては主婦と引きこもりですが、僕の概念として主婦もビジネスマンであると言ってもいいと考えてます。 ビジネスマンの定義は、仕事をする人という事ですが、そこでは「作法」であったり、「効率化」であったり、「お金の概念」がほぼ全ての価値観です。 これは人間が行きていっく上で必ず必要な事でそれを向上させることこそが人間としての魅力に繋がるって事なんですね。 え?引きこもり??、それは人間的魅力が無い「クズ」の事なので、社会人という土俵にも上がっていない人の事です。 僕のブログでは「クズ」は対象にしていないので、必要最低限のレベルは各自にて取得しましょうね。 多くは学校の時に必要最低限の教育は受けているはずですから・・・

数値の桁数トラブル

連番処理を行いたい場合に数字の桁数を合わせたいことがよくある。 例えば、ファイル名の場合は、 file_1.txt file_2.txt ... file_10.txt と桁の違う連番が振られたファイルを一覧で並べてみると、 file_1.txt file_10.txt file_2.txt ... という風な並びになり非常に気持ちが悪い。 これを解消するには file_01.txt file_02.txt ... file_10.txt のように、連番数値に0を追加して桁数を合わせてやることで解消されるのだが、JS言語は、文字列操作が極めて弱く、"%03d"のような記述ができない。 アホみたく if(num < 10){num = "0" + num.toString()} というようなプログラムを毎回書くことは避けたいので、どうすればいいかを検討してみた。

ゼロパディング

http://so-zou.jp/web-app/tech/programming/javascript/grammar/data-type/string/zero-padding.htm このサイトに書いてある方法は極めて単純で使いやすい。 var nums = [1,2,3,4,5,6,7,8,9,10]; for(var i=0; i<nums.length; i++){ nums[i] = ("000" + nums[i].toString()) . slice(-3); } for(var i=0; i<nums.length; i++){ console.log(nums[i]); } > 001 > 002 > 003 ... > 010 解説すると、数字を文字列化して、先頭に桁数を上回る(または想定桁数分の)"0"を追加して、slice関数で後ろから◯桁分を抜き出す方式だ。] サンプルプログラムでは、敢えて配列数値にしてみたが、単一数値で行うと var num = 10; num = ("000" + num) . slice(-3); という風な書き方になるが、0の追加分とsliceの-表記の桁数がずれてしまうとシャレにならない結果になってしまうため、これを解消する関数を作ってみた。

桁数合わせ関数

数値を文字列にして先頭に"0"を桁数分追加し、sliceする方式は変わらないのだが、以下の条件を加えてみた。
・関数にして指定する桁数は1回のみ ・数値の文字lengthが桁数を上回っていれば数値lengthを優先する ・桁数指定により、先頭に追加する"0"は自動で個数算出を行う
/** * zeroPadding * @num : Any numbers * @len : Total number length */ function zeroPadding(num , len){ var num_len = num.toString().length; if(num_len > len){ return num; } var zero_len = len - num_len; var zero_val = ""; for(var i=0; i<zero_len; i++){ zero_val += "0"; } return (zero_val + num.toString()) . slice( -1 * len); }

使用例

zeroPadding(10,4); > 0010 整数のみであればこれで問題ないのだが、小数点を含む場合などのケースもあるので、この関数もう少し便利に改修していきたいな・・・

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ