string.substr

string.substr

substr()方法返回一个字符串中从指定位置开始到指定字符数的字符。

语法

str.substr(start, [length])

参数

start开始提取字符的位置。如果为负值,则被看作 strLength + start,其中strLength 为字符串的长度(例如,如果 start为-3,则被看作strLength + (-3))。length可选。提取的字符数。

返回值

包含给定字符串的提取部分的新字符串。如果length0或负数,则返回空字符串。

描述

start是一个字符的索引。首字符的索引为 0,最后一个字符的索引为 字符串的长度减去1。substrstart 位置开始提取字符,提取length个字符(或直到字符串的末尾)。

如果start为正值,且大于或等于字符串的长度,则 substr返回一个空字符串。

如果 start为负值,则 substr把它作为从字符串末尾开始的一个字符索引。如果 start为负值且 abs(start)大于字符串的长度,则 substr使用 0 作为开始提取的索引。注意负的 start 参数不被 Microsoft JScript 所支持。

如果 length为 0 或负值,则 substr返回一个空字符串。如果忽略length,则substr提取字符,直到字符串末尾。

示例

使用substr()

var str = 'abcdefghij'; console.log('(1, 2): ' + str.substr(1, 2) // '(1, 2): bc' console.log('(-3, 2): ' + str.substr(-3, 2) // '(-3, 2): hi' console.log('(-3): ' + str.substr(-3) // '(-3): hij' console.log('(1): ' + str.substr(1) // '(1): bcdefghij' console.log('(-20, 2): ' + str.substr(-20, 2) // '(-20, 2): ab' console.log('(20, 2): ' + str.substr(20, 2) // '(20, 2): '

备注

Microsoft's JScript 不支持负的 start 索引。如果你想充分利用该方法的功能,则需要使用下面的兼容性代码修复此 bug:

// 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 }

规范

SpecificationStatusComment
ECMAScript 3rd Edition (ECMA-262)StandardDefined in the (informative) Compatibility Annex B. Implemented in JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)The definition of 'String.prototype.substr' in that specification.StandardDefined in the (informative) Compatibility Annex B
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'String.prototype.substr' in that specification.StandardDefined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
ECMAScript Latest Draft (ECMA-262)The definition of 'String.prototype.substr' in that specification.Living StandardDefined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)