最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解JS截取字符串的三個方法substring,substr,slice

 更新時間:2022年03月17日 09:32:49   作者:前端偵探  
js中有三個截取字符的方法,分別是substring()、substr()、slice(),平時我們可能都用到過,但總是會對這些方法有點混淆。本文將詳細(xì)介紹一下這三者的區(qū)別,需要的可以參考一下

js中有三個截取字符的方法,分別是substring()、substr()、slice(),平時我們可能都用到過,但總是會對這些方法有點混淆,特別是substring()和substr(),連方法名都差不多,下面就具體來看一下區(qū)別。

相同點

這三個方法都可以對字符串進行截取,并且返回一個新的字符串,也就是不會對原字符串進行修改 。

這里 > 表示控制臺輸入,< 表示控制臺輸出,下同:

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

不同點

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

substring

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

語法

string.substring(start,stop)

參數(shù)

參數(shù)描述
? ?start??必需。一個 非負(fù)的整數(shù) ,規(guī)定要提取的子串的第一個字符在string??中的位置。
? ?stop??可選。一個 非負(fù)的整數(shù) ,比要提取的子串的最后一個字符在?string??中的位置多 1。 如果省略該參數(shù),那么返回的子串會一直到字符串的結(jié)尾。

說明

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

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

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

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

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

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

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

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

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

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

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

//chrome控制臺
> 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"

其他情況就沒有一一測試了,當(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 指字符串中最后一個字符,-2 指倒數(shù)第二個字符,以此類推。
length可選。子串中的字符數(shù)。必須是數(shù)值。如果省略了該參數(shù),那么返回從string的開始位置到結(jié)尾的字串。

說明

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

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

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

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

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

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

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

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

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

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

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

slice

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

語法

string.slice(start,end)

參數(shù)

參數(shù)描述
start必須。要抽取的片斷的起始下標(biāo)。如果是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數(shù)第二個字符,以此類推。
end可選。緊接著要抽取的片段的結(jié)尾的下標(biāo)。若未指定此參數(shù),則要提取的子串包括start到原字符串結(jié)尾的字符串。如果該參數(shù)是負(fù)數(shù),那么它規(guī)定的是從字符串的尾部開始算起的位置。

說明

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

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

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

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

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

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

//chrome控制臺
> 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控制臺
> var a = '0123456789'
< undefined
> a.slice('xx','5.5')
// => a.slice(0,5)
< "01234"

總結(jié)一下

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

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

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

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

到此這篇關(guān)于詳解JS截取字符串的三個方法substring,substr,slice的文章就介紹到這了,更多相關(guān)JS截取字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 移動設(shè)備手勢事件庫Touch.js使用詳解

    移動設(shè)備手勢事件庫Touch.js使用詳解

    這篇文章主要介紹了移動設(shè)備手勢事件庫Touch.js的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • ES6中Promise、async、await用法超詳細(xì)講解指南

    ES6中Promise、async、await用法超詳細(xì)講解指南

    async+await是ES6中引入的異步編程解決方案,旨在解決異步編程中的回調(diào)地獄問題,下面這篇文章主要給大家介紹了關(guān)于ES6中Promise、async、await用法超詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • javascript創(chuàng)建cookie、讀取cookie

    javascript創(chuàng)建cookie、讀取cookie

    這篇文章主要介紹了javascript創(chuàng)建cookie、讀取cookie的操作方法,內(nèi)容簡單易學(xué),感興趣的小伙伴們可以參考一下
    2016-03-03
  • javascript實現(xiàn)無法關(guān)閉的彈框

    javascript實現(xiàn)無法關(guān)閉的彈框

    本文分享了javascript實現(xiàn)無法關(guān)閉的彈框的實例代碼,感興趣的朋友可以看下
    2016-11-11
  • 詳解Howler.js Web音頻播放終極解決方案

    詳解Howler.js Web音頻播放終極解決方案

    這篇文章主要介紹了詳解Howler.js Web音頻播放終極解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • JS 操作Array數(shù)組的方法及屬性實例解析

    JS 操作Array數(shù)組的方法及屬性實例解析

    本篇文章主要是對JS操作Array數(shù)組的方法及屬性進行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • PHP捕捉異常中斷的方法

    PHP捕捉異常中斷的方法

    相信每位PHP程序員都知道,當(dāng)PHP程序出現(xiàn)異常情況,如出現(xiàn)致命錯誤、超時或者不可知的邏輯錯誤導(dǎo)致程序中斷,這個時候就可以用 register_shutdown_function進行異常處理。下面本文給出了詳細(xì)的示例代碼,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • xWin之JS版

    xWin之JS版

    xWin之JS版...
    2006-11-11
  • js+csss實現(xiàn)的一個帶復(fù)選框的下拉框

    js+csss實現(xiàn)的一個帶復(fù)選框的下拉框

    用js+csss實現(xiàn)的一個帶復(fù)選框的下拉框,用到了很基礎(chǔ)的技術(shù),但是比較實用,喜歡的朋友可以參考下
    2014-09-09
  • FullCalendar日歷插件應(yīng)用之?dāng)?shù)據(jù)展現(xiàn)(一)

    FullCalendar日歷插件應(yīng)用之?dāng)?shù)據(jù)展現(xiàn)(一)

    fullcalendar作為一個功能完善的日歷插件使用非常廣泛,在web開發(fā)開發(fā)過程 中非常流行。它與ext js 中的calendar非常類似,但考慮到extjs 比較“復(fù)雜龐大”,所以我在開發(fā)開發(fā)過程中都會優(yōu)先考慮fullcalendar
    2015-12-12

最新評論

锦州市| 闽清县| 新源县| 阿拉善右旗| 枣强县| 泌阳县| 通许县| 南康市| 克什克腾旗| 枣庄市| 淮滨县| 汤原县| 保亭| 天水市| 如东县| 达日县| 四川省| 高青县| 专栏| 桐梓县| 建瓯市| 永吉县| 吴旗县| 桦甸市| 定边县| 安仁县| 涿州市| 平邑县| 留坝县| 东宁县| 湘潭县| 海晏县| 昌乐县| 延川县| 长海县| 新宁县| 思茅市| 天津市| 开化县| 林芝县| 东辽县|