String.prototype.substr()
非推奨;: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。
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"
構文
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の場合、空文字列が返されます。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® 2026 Language Specification> # sec-string.prototype.substr> |
ブラウザーの互換性
Loading…