【JavaScript】同じ文字(列)を繰り返して新しい文字列を生成。

例えば、文字列 "abc" があったとして、これを3回繰り返す "abcabcabc" という文字列をつくりたいとき、新しめのブラウザでは repeat() という関数が利用できます。

var orig = "abc";
var str = orig.repeat( 3 );
// str = "abcabcabc"

まあ便利。

ただし Internet Explorer では repeat() が未実装なので、これと同じ働きをする関数を定義しておいてあげましょう。

if (!String.prototype.repeat) { /* String.repeat が定義されていなければ… */
   String.prototype.repeat = function(count) {/* …定義する。 */
      return Array(count*1+1).join(this);
   };
}

ほんとは String ( = this )が null の場合だとか、引数 count が数値(あるいは数値と認識できる文字列)で無い場合に対処するためのエラー処理を組み込んだほうが良いのだけれど、個人で使うぶんにはこれでよかろう。

関数内で何をやっているかというと、

  • 繰り返しの数 + 1 の長さの配列を生成して(配列の中身は [ undefined, undefined, undefined , ... ] になりますね)
  • この配列の要素を、繰り返したい文字列を挟んで連結join() )する。

…と、なんともシンプルでスマートな操作です。

 → Repeat Character N times | StackOverflow

賢いことを思いつく人が居るもんですなぁ。

カテゴリ: