2012年9月4日火曜日

JavaScriptのslice()とsubstring()とsubstr()

JavaScriptには、部分文字列を取得するメソッドが3つある。slice()とsubstring()とsubstr()である。
なんで似ているメソッドが3つもあるのか不明だけど、整理する意味でちゃんと書いておく。

  • String.prototype.slice (start, end)
引数startから引数endまでの部分文字列を新しい文字列値で返す。
endは省略でき、その場合は末尾を指定したのと同様になる。
負数の場合は末尾からのインデックス値となる。
'0123456789'.slice(2, 8);       // 234567
'0123456789'.slice(2);          // 23456789
'0123456789'.slice(-5, -2);     // 567
  • String.prototype.substring (start, end)
引数startから引数endまでの部分文字列を新しい文字列値で返す。
endは省略できない。
負数の場合は0に置き換わる。
'0123456789'.substring(2, 8);       // 234567
'0123456789'.substring(-5, 2);      // 01
  • String.prototype.substr (start, length)
引数startからlength数の新しい文字列値を返す。
lengthは省略でき、その場合は元の文字列の末尾まで指定したのと同様になる。
startが負数の場合は0に置き換わる。lengthが負数の場合は・・・不明?
'0123456789'.substr(2, 8);       // 23456789
'0123456789'.substr(2);          // 23456789
'0123456789'.substr(-5, 2);      // 56

これら3メソッドはJavaScriptの仕様であるECMA262にちゃんと載っている。
  • 15.5.4.13 String.prototype.slice (start, end)
  • 15.5.4.15 String.prototype.substring (start, end)
  • B.2.3 String.prototype.substr (start, length)
substr()だけ付録のページに載っているのだが、サブ的な扱いなのかしら?

0 件のコメント:

コメントを投稿