1.substring()
返回一个索引和另一个索引之间的字符串
str.substring(indexStart, indexEnd)
注意向:
1.substring()从提取的字符indexStart,但是不包括indexEnd。
2.如果indexStart邓毅indexEnd,会返回一个空字符串。
3.如果indexEnd省略,会提取到字符串的末尾。
4.如果任一参数小于0或是NaN,它将被视为0。
5.如果indexStart大于indexEnd,那么效果和被交换一样。
// 实例代码。
var str = 'ABCDEFG';
console.log(str.substring(0,1)) // A
console.log(str.substring(1,1)) // ''
console.log(str.substring(1)) // BCDEFG
console.log(str.substring(-1)) // ABCDEFG
console.log(str.substring(-1, 1)) // A (-1)被默认为0
console.log(str.substring(1, -1)) // A
console.log(str.substring(1,2)) // B
console.log(str.substring(2,1)) // B
2.substr()
返回从指定位置开始的字符串中,指定字符数的字符。
str.substr(start, [length]);
注意点:
1.substr会从start获取长度为length的字符串(如果截取到字符串的末尾,会停止截取)
2.如果start是正数,并且大于等于字符串的长度,则substr()返回一个空字符串
3.如果start是负数,那将该值加上字符串长度后,再进行计算,(如果加上还是负数,就从0开始截取)
4.如果length为0或为负数,substrt()返回一个空字符串,如果length省略,substr()提取到字符串结尾
var str = 'ABCDE';
console.log(str.substr(1,2)) // BC
console.log(str.substr(5)) // '' 大于等于字符串长度
console.log(str.substr(1,0)) // '' length = 0
console.log(str.substr(1,-1)) // '' length 为负数。
console.log(str.substr(-1)) // E
console.log(str.substr(-5)) // ABCDE length省略。start大于字符串长度,从0开始到末尾
//Microsoft的JScript不支持起始索引的负值。如果要使用此功能,可以使用以下兼容性代码来解决此错误
// 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);
}
3.substring()与substr()的主要区别
substring()方法的参数表示起始和结束索引, substr()方法的参数是起始索引,和截取的字符串的长度
var text = 'Google';
console.log(text.substring(2,5)); // ogl
console.log(text.substr(2,3)); // ogl
4.slice()
返回一个索引和另一个索引之间的字符串。
str.slice(beginIndex,endIndex)
注意点:
1.beginIndex是负数,则将该值加上字符串长度后在进行计算(如果加上还是负数,则从0开始截取)
2.如果beginIndex大于等于字符串的长度。slice返回一个空字符串
3.如果endIndex忽略,slice()取到字符串的末尾,如果是负数。它将被视为strLength+endInde。strLength是字符串的长度。
var str = 'ABCDE';
console.log(str.slice(0,2)) // AB
console.log(str.slice(-1)) // E
console.log(str.slice(-5)) // ABCDE
console.log(str.slice(5)) // ''
console.log(str.slice(1)) // BCDE
console.log(str.slice(1, -2)) // -2+5 = 3
console.log(str.slice(1,3)) // BC