文字列に指定した長さに満ちるまで設定した文字列を入れるAngularJSのカスタムフィルター

文字列に指定した長さに満ちるまで設定した文字列を入れるAngularJSのカスタムフィルター

文字列を入れるカスタムフィルター

123のような数字に対して左側に0または*などをたして5けたに満たしたいことがある。例)00123 **123

このような場合、AngularJSのカスタムフィルターを作成しておくと使い回しができて便利なので作成してみた。

使い方

{{123 | lpad:5:0}}のようにlpad:(桁数):(満たしたい文字)を入力するだけで00123のように表示してくれる。

ちなみにlpadという名前はSQL関数のLPADから拝借
http://www.shift-the-oracle.com/sql/functions/lpad.html

コード

angular.module('myApp', [])
  .filter('lpad', function () {
    return function (str, len, pad) {
      str = String(str);
      if((len > str.length) && !isNaN(len)) {
        var zero = '',
            i = 0;
        while(i < len) {
          zero += pad;
          i++;
        }
        return (zero + str).slice(-len);
      }
      else {
        return str;
      }
    };
  });

サンプル