以下方法都可以从原字符串中截取某段字符串,并返回一个字符串,且不改变原字符串
slice()方法
-
作用
通过给定开始的位置和结束的位置来截取字符串
-
语法
字符串.slice(beginIndex,endIndex)
-
返回值
返回截取到的字符串
返回值数据类型为字符串string
-
参数
beginIndex
起始值:从该位置开始截取(包含该位置对应的字符)
endIndex
终止值:到该位置结束截取(不包含该位置对应的字符)
注意:
beginIndex
需要大于endIndex
,否则会返回空字符串''
- 正常用法
两个参数,起始值对应的字符包括在内,而终止值对应的字符不包括在内
var s = 'string';
s.slice(1,4) //'tri'
s.slice(-5,-2) //'tri'
- 不设置参数
beginIndex
默认值为0,endIndex
默认值截取到字符串的最后,返回整个字符串
var s = 'string';
s.slice() //'string'
s.slice(0) //'string'
- 设置一个参数
该参数会被视为起始值beginindex
来处理,默认截取到字符串的最后
var s = 'string';
s.slice(1) //'tring'
s.slice(0) //'string'
- 设置参数为负数
从字符串尾部开始往前找,与正数刚好相反
var s = 'string';
s.slice(-5) //'tring'
s.slice(-6) //'string'
- 参数正负号相同时,设置参数起始值大于终止值
返回空字符串''
var s = 'string';
s.slice(4,1) //''
s.slice(-2,-5) //''
-
规律
其实负数和正数混合起来不方便判断,可以将负数加上字符串长度,转化为正数即可
s.slice(1,4) //'tri'
s.slice(-5,-2) //'tri'
//它们的结果完全相同
//-5 + 6 = 1
//-2 + 6 = 4
substring()方法
与slice()方法大致相同,存在一点区别:
- 如果endIndex小于beginIndex,那么会自动调换它们的位置
var s = 'string';
s.substring(1,4) //'tri'
s.substring(4,1) //'tri'
- 如果参数为负数,会自动将其转化为0
var s = 'string';
s.substring(-3); //'string'
s.substring(-1,-2) //''
s.substring(4,-1) //'stri' 相当于s.substring(0,4) 首先将-1转换为0,由于0小于4,又会调换一次位置
substr()方法
-
作用
截取一段指定开始位置和个数的字符串
-
语法
字符串.substr(start,length)
-
返回值
返回截取到的字符串
返回值数据类型为字符串string
-
参数
start
从该位置开始截取(包含该位置对应的字符)
length
截取字符串的长度
- 不设置参数
默认返回整个字符串
var s = 'JavaScript';
s.substr() //'JavaScript'
- 设置一个参数
该参数会被视为起始值start
来处理,默认截取到字符串的最后
若第一个参数为负数,则代表从后向前查找
var s = 'JavaScript';
s.substr(0) //'JavaScript'
s.substr(4) //'Script'
s.substr(-6) //'Script'
- 设置两个参数
var s = 'JavaScript';
s.substr(0,4) //'Java'
s.substr(4,6) //'Script'
- 第二个参数为负数
会自动将负数转化为0,这就表示字符串的长度为0,会返回空字符串''
var s = 'JavaScript';
s.substr(1,-1); //''