substr()、substring() 覚書

substring()もあるので混乱しないように。。。

文字列String.substr()メソッド ⇒ 指定の位置から“指定の文字数分”の文字列を抜き出します。

文字列String.substring()メソッド ⇒ 指定の位置から指定の位置までの文字列を抜き出します。

****************************
String.substr()メソッド ・・・ 指定の位置から指定の文字数分だけ抜き出す

対応バージョン
コアJavaScript 1.2
コーディング形式
string.substr(start, length)
引数
start サブストリングの開始位置。この引数がマイナス値の場合、文字列の終端からの位置を示します。つまり、-1は最後の文字を示し、-2は終端から2番目の文字を示す、といった具合になります。 (0は、一番左端の文字 1は左から2番目の文字)
length サブストリングに含まれる文字の数。この引数が省略されると、返されるサブストリングには文字列の先頭から終端までのすべての文字が含まれます。

リターン値
(startが指定する文字を含む)文字列の先頭部分からlength文字までのコピー。lengthが指定されていない場合は、文字列の終端までのコピー。

解説
substr()メソッドは、文字列のサブストリングを抽出して返します。このメソッドはstringを変更しません。
substr()メソッドは、必要なサブストリングを文字位置とlengthで表します。このメソッドは、String.substring()や2つの文字位置でサブストリングを指定するString.splice()の代替として利用すると便利です。

使用例

var s = “abcdefg”;
s.substr(2,2); // cdを返す。
s.substr(3); // defgを返す。
s.substr(-3,2); // Navigatorではefを返し、IE 4ではabを返す。

バグ情報
マイナス値のstartは、IE 4では機能しません。文字列の終端からの文字位置を表す代わりに、文字位置を0に指定します。

*****************************

String.substring()メソッド ・・・ サブストリングを返す

対応バージョン
コアJavaScript 1.0、ECMA-262
コーディング形式
string.substring(from, to)

引数
from string内で指定されたサブストリングの先頭文字の位置を示す整数。fromの値は0からstring.length-1までの値でなければなりません。
to string内で指定されたサブストリングの最終文字の位置より1だけ大きい整数(省略可)。toの値は1からstring.lengthまでの値でなければなりません。

リターン値
stringのサブストリングを保持し、長さがto-fromの新文字列。この新文字列は、stringのfromからto-1までの文字で構成されます。

解説
String.substring()メソッドはstring中の指定されたサブストリングを返します。fromとtoが等しい場合、String.substring()メソッドは空の文字列(長さ0)を返します。fromがtoより大きい場合、この2つの引数を取り替えてから処理を進めます。

使用上のヒントと注意
String.substring()メソッドは使い方がわかりにくいかもしれません。from位置の文字はサブストリングに含まれますが、to位置の文字はサブストリングに含まれないことに注意しましょう。このような引数の指定方法なので、返されるサブストリングの長さは常にto-fromの値と等しくなります。
文字列からサブストリングを取り出す方法として、開始文字とサブストリングの長さを指定するほうが便利な場合がよくあります。(substr()の方が分かりやすい。)
以下に示す関数を使えばそのように指定できます。JavaScript1.2では、String.substr()を使ってこれを行うことができます。
またJavaScript1.2では、String.slice()メソッドも提供されています。このメソッドのほうがsubstringよりも便利な場合もあります。