以下方法都可以從原字符串中截取某段字符串,并返回一個字符串,且不改變原字符串
slice()方法
-
作用
通過給定開始的位置和結(jié)束的位置來截取字符串
-
語法
字符串.slice(beginIndex,endIndex)
-
返回值
返回截取到的字符串
返回值數(shù)據(jù)類型為字符串string
-
參數(shù)
beginIndex起始值:從該位置開始截取(包含該位置對應(yīng)的字符)
endIndex終止值:到該位置結(jié)束截取(不包含該位置對應(yīng)的字符)
注意:
beginIndex需要大于endIndex,否則會返回空字符串''
- 正常用法
兩個參數(shù),起始值對應(yīng)的字符包括在內(nèi),而終止值對應(yīng)的字符不包括在內(nèi)
var s = 'string';
s.slice(1,4) //'tri'
s.slice(-5,-2) //'tri'
- 不設(shè)置參數(shù)
beginIndex默認(rèn)值為0,endIndex默認(rèn)值截取到字符串的最后,返回整個字符串
var s = 'string';
s.slice() //'string'
s.slice(0) //'string'
- 設(shè)置一個參數(shù)
該參數(shù)會被視為起始值beginindex來處理,默認(rèn)截取到字符串的最后
var s = 'string';
s.slice(1) //'tring'
s.slice(0) //'string'
- 設(shè)置參數(shù)為負(fù)數(shù)
從字符串尾部開始往前找,與正數(shù)剛好相反
var s = 'string';
s.slice(-5) //'tring'
s.slice(-6) //'string'
- 參數(shù)正負(fù)號相同時(shí),設(shè)置參數(shù)起始值大于終止值
返回空字符串''
var s = 'string';
s.slice(4,1) //''
s.slice(-2,-5) //''
-
規(guī)律
其實(shí)負(fù)數(shù)和正數(shù)混合起來不方便判斷,可以將負(fù)數(shù)加上字符串長度,轉(zhuǎn)化為正數(shù)即可
s.slice(1,4) //'tri'
s.slice(-5,-2) //'tri'
//它們的結(jié)果完全相同
//-5 + 6 = 1
//-2 + 6 = 4
substring()方法
與slice()方法大致相同,存在一點(diǎn)區(qū)別:
- 如果endIndex小于beginIndex,那么會自動調(diào)換它們的位置
var s = 'string';
s.substring(1,4) //'tri'
s.substring(4,1) //'tri'
- 如果參數(shù)為負(fù)數(shù),會自動將其轉(zhuǎn)化為0
var s = 'string';
s.substring(-3); //'string'
s.substring(-1,-2) //''
s.substring(4,-1) //'stri' 相當(dāng)于s.substring(0,4) 首先將-1轉(zhuǎn)換為0,由于0小于4,又會調(diào)換一次位置
substr()方法
-
作用
截取一段指定開始位置和個數(shù)的字符串
-
語法
字符串.substr(start,length)
-
返回值
返回截取到的字符串
返回值數(shù)據(jù)類型為字符串string
-
參數(shù)
start 從該位置開始截取(包含該位置對應(yīng)的字符)
length 截取字符串的長度
- 不設(shè)置參數(shù)
默認(rèn)返回整個字符串
var s = 'JavaScript';
s.substr() //'JavaScript'
- 設(shè)置一個參數(shù)
該參數(shù)會被視為起始值start來處理,默認(rèn)截取到字符串的最后
若第一個參數(shù)為負(fù)數(shù),則代表從后向前查找
var s = 'JavaScript';
s.substr(0) //'JavaScript'
s.substr(4) //'Script'
s.substr(-6) //'Script'
- 設(shè)置兩個參數(shù)
var s = 'JavaScript';
s.substr(0,4) //'Java'
s.substr(4,6) //'Script'
- 第二個參數(shù)為負(fù)數(shù)
會自動將負(fù)數(shù)轉(zhuǎn)化為0,這就表示字符串的長度為0,會返回空字符串''
var s = 'JavaScript';
s.substr(1,-1); //''