日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Js中截取字符串的三個(gè)方法 substring、substr、slice

相同點(diǎn)

這三個(gè)方法都可以對(duì)字符串進(jìn)行截取,并且返回一個(gè)新的字符串,也就是不會(huì)對(duì)原字符串進(jìn)行修改。

創(chuàng)新互聯(lián)公司10多年企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站建設(shè)及推廣,對(duì)成都加固等多個(gè)領(lǐng)域擁有豐富的網(wǎng)站制作經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

這里 > 表示控制臺(tái)輸入,< 表示控制臺(tái)輸出,下同:

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr(1,5)
< "12345"
> a
< "0123456789" //沒有發(fā)生改變

不同點(diǎn)

這三個(gè)方法的不同之處在于參數(shù)不同。

substring

substring() 方法用于提取字符串中介于兩個(gè)指定下標(biāo)之間的字符。

語法

string.substring(start,stop)

參數(shù)

參數(shù)

描述

??start??

必需。一個(gè)非負(fù)的整數(shù),規(guī)定要提取的子串的第一個(gè)字符在 ??string?? 中的位置。

??stop??

可選。一個(gè)非負(fù)的整數(shù),比要提取的子串的最后一個(gè)字符在 ??string?? 中的位置多 1。如果省略該參數(shù),那么返回的子串會(huì)一直到字符串的結(jié)尾。

說明

1.substring() 方法返回的子串包括 start 處的字符,但不包括 stop 處的字符。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(1,5)
< "1234"

2.如果參數(shù) start 與 stop 相等,那么該方法返回的就是一個(gè)空串(即長度為 0 的字符串)。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(1,1)
< ""

3.如果 start 比 stop 大,那么該方法在提取子串之前會(huì)先交換這兩個(gè)參數(shù)。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(5,1)
//=>a.substring(1,5)
< "1234"

4.如果 start 和 stop 有負(fù)數(shù),那么會(huì)把該參數(shù)自動(dòng)轉(zhuǎn)為0,然后繼續(xù)上述規(guī)則。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(5,-1)
//=> a.substring(5,0)
//=> a.substring(0,5)
< "1234"

5.如果 start 和 stop 有正小數(shù)(負(fù)數(shù)直接進(jìn)行第4條),那么會(huì)把該參數(shù)向下取整,然后繼續(xù)上述規(guī)則。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(5,2.5)
//=> a.substring(5,2)
//=> a.substring(2,5)
< "234"

6.如果 start 和 stop 有字符串,那么會(huì)先進(jìn)行parseInt(),如果轉(zhuǎn)換結(jié)果為NaN,那么就轉(zhuǎn)換為0,其余情況繼續(xù)上述規(guī)則。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substring(5,'2.5')
//=> a.substring(5,2)
//=> a.substring(2,5)
< "234"
> a.substring(5,'ss')
//=> a.substring(5,NaN)
//=> a.substring(5,0)
//=> a.substring(0,5)
< "01234"

其他情況就沒有一一測(cè)試了,當(dāng)然正常情況下盡量不要這么干,畢竟語法上已經(jīng)規(guī)定了是整數(shù)。

substr

substr() 方法可在字符串中抽取從 start 下標(biāo)開始的指定數(shù)目的字符。

語法

string.substr(start,length)

參數(shù)

參數(shù)

描述

??start??

必需。要抽取的子串的起始下標(biāo)。必須是數(shù)值。如果是負(fù)數(shù),那么該參數(shù)聲明從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最后一個(gè)字符,-2 指倒數(shù)第二個(gè)字符,以此類推。

??length??

可選。子串中的字符數(shù)。必須是數(shù)值。如果省略了該參數(shù),那么返回從??string??的開始位置到結(jié)尾的字串。

說明

該方法與substring()最大的區(qū)別在于第二個(gè)參數(shù)是你需要截取字符串的長度,而不是位置。

1.substr() 方法返回的子串從 start 處的字符開始(包括)往后截取length長度,如果超過最末端就到最末端結(jié)束。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr(1,5)
< "12345"
> a.substr(1,15)
// 只會(huì)到最末端,多了沒用
< "123456789"

2.start可以取負(fù)值,表示從字符串尾部往頭部開始數(shù)(從右到左,注意是從1開始,比如-1 指字符串中最后一個(gè)字符),但是截取長度還是從左到右,如果超過最末端就到最末端結(jié)束。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr(-4,2)
// -4表示從右開始數(shù)第4個(gè),就是'6',然后取2個(gè)長度的字符串,就是'67'
< "67"

3.如果length為負(fù)值,那么會(huì)直接當(dāng)成0處理,最終返回""。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr(4,-2)
//=> a.substr(4,0)
< ""

4.如果start或者length為小數(shù),那么會(huì)截取小數(shù)部分。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr(1.2,5.2)
//=> a.substr(1,5)
< "12345"

5.如果 start 和 length 有字符串,那么會(huì)先進(jìn)行parseInt(),如果轉(zhuǎn)換結(jié)果為NaN,那么就轉(zhuǎn)換為0,其余情況繼續(xù)上述規(guī)則。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.substr('aa','5')
//=> a.substr(0,5)
< "01234"

slice

slice() 方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分。

語法

string.slice(start,end)

參數(shù)

參數(shù)

描述

??start??

必須。要抽取的片斷的起始下標(biāo)。如果是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個(gè)字符,-2 指倒數(shù)第二個(gè)字符,以此類推。

??end??

可選。緊接著要抽取的片段的結(jié)尾的下標(biāo)。若未指定此參數(shù),則要提取的子串包括 ??start?? 到原字符串結(jié)尾的字符串。如果該參數(shù)是負(fù)數(shù),那么它規(guī)定的是從字符串的尾部開始算起的位置。

該方法的兩個(gè)參數(shù)均為位置坐標(biāo),和subtring比較像,區(qū)別就是該方法支持負(fù)數(shù),并且不會(huì)交換位置,始終是從start到end,如果該區(qū)間不存在,那么返回''。

1.slice() 方法返回的子串包括 start 處的字符,但不包括end 處的字符。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.slice(1,5)
< "1234"

2.當(dāng)start或者end為負(fù)值時(shí),定位方式和substr一,從右往左數(shù),從1開始。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.slice(1,-1)
//起始點(diǎn)從第1(包括)開始,結(jié)束點(diǎn)為從右往左數(shù)第1個(gè)(不包括)
< "12345678"

3.start到end的順序始終是從左到右,如果最終start的位置在end的右邊,那么返回''。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.slice(2,1)
//2所在的位置是'2',1所在的位置是'1',從2=>1,方向相反,返回為空
< ""
> a.slice(-2,1)
//-2所在的位置是'8',1所在的位置是'1',從8=>1,方向相反,返回為空
< ""
> a.slice(-2,-1)
//-2所在的位置是'8',-1所在的位置是'9',從8=>9,方向正常,返回為'8'
< "8"

4.其他情況和substring處理方式一致。

//chrome控制臺(tái)
> var a = '0123456789'
< undefined
> a.slice('xx','5.5')
// => a.slice(0,5)
< "01234"

總結(jié)一下

從上面測(cè)試得出結(jié)論,substring不支持負(fù)值,其他兩種方式均支持負(fù)數(shù)表示,并且是從右邊第一位開始計(jì)數(shù)。

substr的第二個(gè)參數(shù)是長度,這是和其他兩種方式最大的不同之處。

slice的方向性比較強(qiáng),永遠(yuǎn)是從start=>end對(duì)應(yīng)左=>右。

以上結(jié)論均在最新谷歌瀏覽器上測(cè)試,IE和火狐未測(cè)試。


網(wǎng)站題目:Js中截取字符串的三個(gè)方法 substring、substr、slice
網(wǎng)站地址:http://www.5511xx.com/article/djghpos.html