String.prototype.substr()
非推奨: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。
substr()
メソッドは、文字列の一部を、指定した位置から後方向に指定した文字数だけ返します。
メモ: substr()
は ECMAScript 仕様書の主要部にはありません。付録 B: ウェブブラウザーのための追加 ECMAScript 機能 で定義されており、ブラウザー以外のランタイムでは通常オプションです。従って、コードのクロスプラットフォームの親和性を最大にするには、代わりに標準の String.prototype.substring()
または String.prototype.slice()
メソッドを使用するよう勧められています。これら 3 つのメソッドの比較が String.prototype.substring()
page にあります。
試してみましょう
構文
substr(start)
substr(start, length)
引数
返値
指定された文字列の指定された部分が入った新しい文字列です。
解説
文字列の substr()
メソッドは、その文字列の start
のインデックスから length
文字分を数えて抽出します。
start >= str.length
である場合、空文字列が返されます。start < 0
である場合、文字列の末尾から数えたインデックスになります。厳密には、この場合はmax(start + str.length, 0)
で始まる部分文字列になります。start
が省略されたかundefined
であった場合、0
として扱われます。length
が省略されたかundefined
であった場合、またはstart + length >= str.length
であった場合、substr()
は文字列の末尾まで文字を抽出します。length < 0
の場合、空文字列が返されます。start
とlength
のどちらでも、NaN
は0
として扱われます。
substr()
の使用を避けることが推奨されますが、レガシーコードにおいて substr()
を slice()
または substring()
に移行する簡単な方法はありません。例えば、str = "01234", a = 1, l = -2
の場合、str.substr(a, l)
, str.slice(a, a + l)
, str.substring(a, a + l)
はすべて異なる結果を返します。 substr()
は空文字列を返し、slice()
は "123"
を返し、substring()
は "0"
を返します。実際のリファクタリング方法は、a
と l
の範囲に関する知識に依存します。
例
substr() の使用
const aString = "Mozilla";
console.log(aString.substr(0, 1)); // 'M'
console.log(aString.substr(1, 0)); // ''
console.log(aString.substr(-1, 1)); // 'a'
console.log(aString.substr(1, -1)); // ''
console.log(aString.substr(-3)); // 'lla'
console.log(aString.substr(1)); // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2)); // ''
仕様書
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.substr |
ブラウザーの互換性
BCD tables only load in the browser