String.prototype.substr()

非推奨: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

substr() メソッドは、文字列の一部を、指定した位置から後方向に指定した文字数だけ返します。

メモ: substr() は ECMAScript 仕様書の主要部にはありません。付録 B: ウェブブラウザーのための追加 ECMAScript 機能 で定義されており、ブラウザー以外のランタイムでは通常オプションです。従って、コードのクロスプラットフォームの親和性を最大にするには、代わりに標準の String.prototype.substring() または String.prototype.slice() メソッドを使用するよう勧められています。これら 3 つのメソッドの比較が String.prototype.substring() page にあります。

試してみましょう

構文

js
substr(start)
substr(start, length)

引数

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 の場合、空文字列が返されます。
  • startlength のどちらでも、NaN0 として扱われます。

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" を返します。実際のリファクタリング方法は、al の範囲に関する知識に依存します。

substr() の使用

js
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

関連情報