substring()
函数用于返回当前字符串中一个连续的片段。
语法:
str.substring(start [, end])
类型声明:
interface String {substring(start: number, end?: number): string;}
参数说明:
参数 | 描述 | 类型 |
---|---|---|
start | 指向字符串指定部分的开头的索引 | number |
end | 可选,指向字符串指定部分的结尾的索引(不包括该索引) | number |
substring()
函数的返回值为 String 类型,返回当前字符串索引 [start, end)
之间的连续字符所组成的字符串(不包括 end
)。
substring()
函数的参数顺序是不固定的,该函数将自动使用 start
和 end
中较小的值作为起始索引,较大的值作为结尾索引。
end
,substring()
提取字符一直到字符串末尾。NaN
,则将其置为 0。str.length
,则被当作 str.length
。start
等于 end
,则不会复制任何字符,返回空字符串。start
大于 end
,则 substring()
的执行效果就像两个参数调换了一样。例如,str.substring(1, 0)
等价于 str.substring(0, 1)
。下例使用 substring
输出字符串 "Mozilla" 中的字符:
var str = 'abcdefghij';// 开始索引为0,结束索引省略即复制字符到字符串末尾str.substring(0);// 'abcdefghij'// 开始索引为0,结束索引为2str.substring(0, 2);// 'ab'// 开始索引为负数即为0,结束索引为2str.substring(-2, 2);// 'ab'// 开始索引为NaN即为0,结束索引为2str.substring('h', 2);// 'ab'// 开始索引为11大于字符串长度,不复制任何字符,返回空字符串str.substring(11);// ''// 开始索引为0,结束索引为11大于字符串长度,复制字符到字符末尾str.substring(0, 11);// 'abcdefghij'// 开始索引与结束索引相等,返回空字符串str.substring(0, 0);// ''// 开始索引大于结束索引,两者数值调换即等价于str.substring(0, 1)str.substring(1, 0);// 'a'// 开始索引大于结束索引,两者数值调换即等价于str.substring(0, 5)str.substring(5, 'h');// 'abcde'
length
属性来使用 substring()
下面一个例子运用了 String.length
属性去获取指定字符串的倒数元素。显然这个办法更容易记住,因为你不再像上面那个例子那样去记住起始位置和最终位置。
// Displays 'ghij' the last 4 charactersvar word = 'abcdefghij';var word4 = word.substring(word.length - 4);console.log(word4);// 'ghij'// Displays 'fghij' the last 5 charactersvar word = 'abcdefghij';var word5 = word.substring(word.length - 5);console.log(word5);// 'fghij'
const removeTail = function (str) {if (str === null || str.length === 0) return str;const len = str.length;return str.substring(0, len - 1);};