このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

String.prototype.substr()

Deprecated

Avoid using this feature in new projects. HTML wrapper methods exist only for backwards compatibility. Use DOM APIs to create elements instead. This feature may be a candidate for removal from web standards or browsers.

Consider using the following features instead: DOM.

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

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

試してみましょう

const str = "Mozilla";

console.log(str.substr(1, 2));
// 予想される結果: "oz"

console.log(str.substr(2));
// 予想される結果: "zilla"

構文

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)); // ''

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-string.prototype.substr

ブラウザーの互換性

関連情報