String.prototype.substring()

substring() メソッドは、0 インデックスやそのほか、または文字列の最後までの String オブジェクトの部分集合を返します。

構文

str.substring(indexStart[, indexEnd])

引数

indexStart
0 と 文字列の長さから 1 引いた数の間にある整数
indexEnd
任意。0 から文字列の文字数までの整数

戻り値

与えられた文字列から抽出されたセクションを含む新しい文字列。

詳細

substring()indexStart から indexEnd 未満の文字を取り出します。特に、

  • indexStartindexEnd と等しい場合、 substring() は空の文字列を返します。
  • indexEnd が省略された場合、substring() は文字列の最後までの文字を取り出します。
  • 両方の引数が 0 未満、あるいは、NaN だった場合、それは 0 だったものとして扱われます。
  • 両方の引数が stringName.length より大きかった場合、それは stringName.length だったものとして扱われます。

indexStartindexEnd より大きかった場合、substring は 2 つの引数が交換されたものとして実行されます。 すなわち、str.substring(1, 0) == str.substring(0, 1) は真となります。

例: substring() メソッドの使用

以下の例は、"Mozilla" という文字列から取り出した文字を表示するために substring() メソッドを使用しています。:

var anyString = "Mozilla";
  
// "Moz" を表示します
console.log(anyString.substring(0, 3));
console.log(anyString.substring(3, 0));

// "lla" を表示します。
console.log(anyString.substring(4, 7));
console.log(anyString.substring(7, 4));

// "Mozill" を表示します
console.log(anyString.substring(0, 6));

// "Mozilla" を表示します
console.log(anyString.substring(0, 7));
console.log(anyString.substring(0, 10));

例: length プロパティと substring() を使用する

次の例では、特定の文字列の最後の文字を抜き出すために、substring() メソッドと length プロパティを使用しています。この方法では、上記の例と同じようあなたが最初と最後のインデックスを知っている必要がないこと考えると、覚えやすいかもしれません。

// 最後の 4 文字の 'illa' を表示します
var anyString = 'Mozilla';
var anyString4 = anyString.substring(anyString.length - 4);
console.log(anyString4);

// 最後の 5 文字の 'zilla' を表示します
var anyString = 'Mozilla';
var anyString5 = anyString.substring(anyString.length - 5);
console.log(anyString5);

例: 文字列内の部分文字列を置き換える

以下の例は、文字列内の部分文字列を置き換えます。それは個々の文字と部分文字列の両方を置き換えるでしょう。例の最後で呼ばれる関数は、"Brave New World" を "Brave New Web" に変更します。

function replaceString(oldS, newS, fullS) {
    // fullS という文字列内で oldS を newS に置き換えます。

    for (var i = 0; i < fullS.length; i++) {
        if ( fullS.substring(i, i + oldS.length) == oldS ) {
            fullS = fullS.substring(0, i) +
	        newS +
	        fullS.substring(i + oldS.length, fullS.length);
        }
    }

    return fullS;
}

replaceString("World", "Web", "Brave New World");

※上記コードはあくまで substring メソッドの説明の為のものであり、不完全です。oldS 自体が newS の部分文字列である場合……例えば "世界" と "新世界" を置換しようとした場合、これは無限ループになってしまいます。実践的なコードは、以下の様なものになります。

function replaceString(oldS, newS, fullS) {
    return fullS.split(oldS).join(newS);
}

上述のコードは、 substring 操作の例を提供します。部分文字列を置き換える必要があるとき、 多くの場合 String.prototype.replace() を使用します。

仕様

仕様 ステータス コメント
ECMAScript 1st Edition (ECMA-262) 標準 JavaScript 1.0 で実装。
ECMAScript 5.1 (ECMA-262)
String.prototype.substring の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.substring の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
String.prototype.substring の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, teoli, ethertank, Potappo, Mgjbot
 最終更新者: YuichiNukiyama,