String.prototype.substr()

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

構文

str.substr(start[, length])

引数

start
返却する部分文字列に含まれる最初の文字の位置です。
length
任意です。取り出す文字の数です。

返値

指定された文字列の指定された部分が入った新しい文字列です。

解説

substr() は、 str のうち length 文字分を、 start の位置から数えて抽出します。

  • start が正の数である場合、文字列の先頭から数えた位置になります。この値は str.length が上限になります。
  • start が負の数である場合、文字列の末尾から数えた位置になります。この値は -str.length が下限になります。
  • 注: Microsoft の JScript では、 start の引数が負の数であっても文字列の末尾からの位置にはなりません。
  • length が省略された場合、 substr() は文字列の末尾までの文字を抽出します。
  • lengthundefined である場合、 substr() は文字列の末尾までの文字を抽出します。
  • length が負の数である場合、 0 として扱われます。
  • start および length において、 NaN0 として扱われます。

ポリフィル

Microsoft の JScript は start の位置として負の数に対応していません。この機能を使用したい場合は、このバグを回避するために、次の互換コードを使用することができます。

// only run when the substr() function is broken
if ('ab'.substr(-1) != 'b') {
  /**
   *  Get the substring of a string
   *  @param  {integer}  start   where to start the substring
   *  @param  {integer}  length  how many characters to return
   *  @return {string}
   */
  String.prototype.substr = function(substr) {
    return function(start, length) {
      // call the original method
      return substr.call(this,
      	// did we get a negative start, calculate how much it is from the beginning of the string
        // adjust the start parameter for negative value
        start < 0 ? this.length + start : start,
        length)
    }
  }(String.prototype.substr);
}

substr() の使用

var 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 (ECMA-262)
String.prototype.substr の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
substr
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 0.1.100

凡例

完全対応  
完全対応
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。

関連情報