substring()
メソッドは、0 インデックスやそのほか、または文字列の最後までの String
オブジェクトの部分集合を返します。
構文
str.substring(indexStart[, indexEnd])
引数
indexStart
- 0 と 文字列の長さから 1 引いた数の間にある整数
indexEnd
- 任意。0 から文字列の文字数までの整数
戻り値
与えられた文字列から抽出されたセクションを含む新しい文字列。
詳細
substring()
は indexStart
から indexEnd
未満の文字を取り出します。特に、
indexStart
がindexEnd
と等しい場合、substring()
は空の文字列を返します。indexEnd
が省略された場合、substring()
は文字列の最後までの文字を取り出します。- 両方の引数が 0 未満、あるいは、
NaN
だった場合、それは 0 だったものとして扱われます。 - 両方の引数が
stringName.length
より大きかった場合、それはstringName.length
だったものとして扱われます。
indexStart
が indexEnd
より大きかった場合、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()
を使用します。
仕様
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |