substr() メソッドは、文字列の一部を、指定した位置から後方向指定した文字数だけ返します。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
構文
str.substr(start[, length])
引数
start- 返却する部分文字列に含まれる最初の文字の位置です。
length- 任意です。取り出す文字の数です。
返値
指定された文字列の指定された部分が入った新しい文字列です。
解説
substr() は、 str のうち length 文字分を、 start の位置から数えて抽出します。
startが正の数である場合、文字列の先頭から数えた位置になります。この値はstr.lengthが上限になります。startが負の数である場合、文字列の末尾から数えた位置になります。この値は-str.lengthが下限になります。- 注: Microsoft の JScript では、
startの引数が負の数であっても文字列の末尾からの位置にはなりません。 lengthが省略された場合、substr()は文字列の末尾までの文字を抽出します。lengthがundefinedである場合、substr()は文字列の末尾までの文字を抽出します。lengthが負の数である場合、0として扱われます。startおよびlengthにおいて、NaNは0として扱われます。
ポリフィル
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)); // ''
仕様書
ブラウザーの互換性
BCD tables only load in the browser
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。