substr()
函数用于返回当前字符串中一个连续的片段。
语法:
str.substr( from [, length] )
类型声明:
interface String {substr(from: number, length?: number): string;}
参数说明:
参数 | 说明 | 类型 |
---|---|---|
from | 指向字符串指定部分的开头的索引。 | number |
length | 可选,返回的子字符串片段中包含的字符数。 | number |
substr()
函数从 str
的索引 from
处开始复制,直到复制 length
个字符或字符串的结尾为止。
from
为正值,且大于或等于字符串的长度,则返回一个空字符串。from
为负值,则将其视为 str.length + from
开始的一个字符索引。若 str.length + from
大于字符串的长度,则使用 0 作为开始提取的索引。length
为负数或 0,则不会复制任何字符,返回空字符串。length
参数,则一直复制到字符串的结尾。var str = 'Hello world!';// 开始索引为1,截取长度为2str.substr(1, 2);// 'el'// 开始索引为 -3+10=7,截取长度为2str.substr(-3, 2);// 'or'// 开始索引为 -3+10=7,截取长度为延伸至字符结尾str.substr(-3);// 'orld!'// 开始索引为 1,截取长度为延伸至字符结尾str.substr(1);// 'Hello world!'// 开始索引为 -20+10=-10 即 0,截取长度为2str.substr(-20, 2);// 'He'// 开始索引为 20 大于字符串长度(返回空字符串),截取长度为 2str.substr(20, 2);// ''// 开始索引为 0,截取长度为 -1 和 0(返回空字符串)str.substr(0, -1);// ''str.substr(0, 0);// ''
Microsoft's JScript 不支持负数的 from
参数,如果想充分利用该方法,需要使用下面的兼容代码修复 BUG:
// only run when the substr function is brokenif ('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) {// did we get a negative start, calculate how much it is// from the beginning of the stringif (start < 0) start = this.length + start;// call the original functionreturn substr.call(this, start, length);};})(String.prototype.substr);}