摘要:方法用于提取字符串中介于兩個指定下標之間的字符。一個非負的整數,規定要提取的子串的第一個字符在中的位置。子串中的字符數??刂婆_方法可提取字符串的某個部分,并以新的字符串返回被提取的部分。
查看原文可以有更好的排版效果哦
js中有三個截取字符的方法,分別是substring()、substr()、slice(),平時我們可能都用到過,但總是會對這些方法有點混淆,特別是substring()和substr(),連方法名都差不多,下面就具體來看一下區別。
相同點這三個方法都可以對字符串進行截取,并且返回一個新的字符串,也就是不會對原字符串進行修改
//chrome控制臺 > var a = "0123456789" < undefined > a.substr(1,5) < "12345" > a < "0123456789" //沒有發生改變不同點
這三個方法的不同之處在于參數不同。
substringsubstring() 方法用于提取字符串中介于兩個指定下標之間的字符。
語法
string.substring(start,stop)
參數
參數 | 描述 |
---|---|
start | 必需。一個非負的整數,規定要提取的子串的第一個字符在 string 中的位置。 |
stop | 可選。一個非負的整數,比要提取的子串的最后一個字符在 string 中的位置多 1。如果省略該參數,那么返回的子串會一直到字符串的結尾。 |
說明
1.substring() 方法返回的子串包括 start 處的字符,但不包括 stop 處的字符。
//chrome控制臺 > var a = "0123456789" < undefined > a.substring(1,5) < "1234"
2.如果參數 start 與 stop 相等,那么該方法返回的就是一個空串(即長度為 0 的字符串)。
//chrome控制臺 > var a = "0123456789" < undefined > a.substring(1,1) < ""
3.如果 start 比 stop 大,那么該方法在提取子串之前會先交換這兩個參數。
//chrome控制臺 > var a = "0123456789" < undefined > a.substring(5,1) //=>a.substring(1,5) < "1234"
4.如果 start 和 stop 有負數,那么會把該參數自動轉為0,然后繼續上述規則。
//chrome控制臺 > var a = "0123456789" < undefined > a.substring(5,-1) //=>a.substring(5,0) => a.substring(0,5) < "1234"
5.如果 start 和 stop 有正小數(負數直接進行第4條),那么會把該參數向下取整,然后繼續上述規則。
//chrome控制臺 > var a = "0123456789" < undefined > a.substring(5,2.5) //=>a.substring(5,2) => a.substring(2,5) < "234"
6.如果 start 和 stop 有字符串,那么會先進行parseInt(),如果轉換結果為NaN,那么就轉換為0,其余情況繼續上述規則。
//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,2) =>a.substring(5,0) => a.substring(2,5) < "234"
其他情況就沒有一一測試了,當然正常情況下盡量不要這么干,畢竟語法上已經規定了是整數。
substrsubstr() 方法可在字符串中抽取從 start 下標開始的指定數目的字符。
語法
string.substr(start,length)
重要事項:ECMAscript 沒有對該方法進行標準化,因此反對使用它。
參數
參數 | 描述 |
---|---|
start | 必需。要抽取的子串的起始下標。必須是數值。如果是負數,那么該參數聲明從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最后一個字符,-2 指倒數第二個字符,以此類推。 |
length | 可選。子串中的字符數。必須是數值。如果省略了該參數,那么返回從 string 的開始位置到結尾的字串。 |
說明
該方法與substring()最大的區別在于第二個參數是你需要截取字符串的長度,而不是位置。
1.substr() 方法返回的子串從 start 處的字符開始(包括)往后截取length長度,如果超過最末端就到最末端結束。
//chrome控制臺 > var a = "0123456789" < undefined > a.substr(1,5) < "12345" > a.substr(1,15) //只會到最末端,多了沒用 < "123456789"
2.start可以取負值,表示從字符串尾部往頭部開始數(從右到左,注意是從1開始,比如-1 指字符串中最后一個字符),但是截取長度還是從左到右,如果超過最末端就到最末端結束。
//chrome控制臺 > var a = "0123456789" < undefined > a.substr(-4,2) //-4表示從右開始數第4個,就是"6",然后取2個長度的字符串,就是"67" < "67"
3.如果length為負值,那么會直接當成0處理,最終返回""。
//chrome控制臺 > var a = "0123456789" < undefined > a.substr(4,-2) // => a.substr(4,0) < ""
4.如果start或者length為小數,那么會截取小數部分。
//chrome控制臺 > var a = "0123456789" < undefined > a.substr(1.2,5.2) // => a.substr(1,5) < "12345"
5.如果 start 和 length 有字符串,那么會先進行parseInt(),如果轉換結果為NaN,那么就轉換為0,其余情況繼續上述規則。
//chrome控制臺 > var a = "0123456789" < undefined > a.substr("aa","5") // => a.substr(0,5) < "01234"slice
slice() 方法可提取字符串的某個部分,并以新的字符串返回被提取的部分。
語法
string.slice(start,end)
參數
參數 | 描述 |
---|---|
start | 必須。要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。 |
end | 可選。緊接著要抽取的片段的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。如果該參數是負數,那么它規定的是從字符串的尾部開始算起的位置。 |
該方法的兩個參數均為位置坐標,和subtring比較像,區別就是該方法支持負數,并且不會交換位置,始終是從start到end,如果該區間不存在,那么返回""。
1.slice() 方法返回的子串包括 start 處的字符,但不包括 end 處的字符。
//chrome控制臺 > var a = "0123456789" < undefined > a.slice(1,5) < "1234"
2.當start或者end為負值時,定位方式和substr一直,從右往左數,從1開始。
//chrome控制臺 > var a = "0123456789" < undefined > a.slice(1,-1)//起始點從第1(包括)開始,結束點為從右往左數第1個(不包括) < "12345678"
2.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"
3.其他情況和substring處理方式一致
//chrome控制臺 > var a = "0123456789" < undefined > a.slice("xx","5.5")// => a.slice(0,5) < "01234"小節
從上面測試得出結論,substring不支持負值,其他兩種方式均支持負數表示,并且是從右邊第一位開始計數。
substr的第二個參數是長度,這是和其他兩種方式最大的不同之處,slice的方向性比較強,永遠是從start=>end對應左=>右。
以上結論均在最新谷歌瀏覽器上測試,IE和火狐未測試。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97738.html
摘要:交換參數位置,小的在前。的如果為負數,同樣從尾部算起,如果其絕對值超過原字符串長度或者為,返回空字符串。會取和中較小的值為二者相等返回空字符串,任何一個參數為負數被替換為即該值會成為參數。第二個為負值是始終返回控制符串。 slice,substring,substr三個函數都是截取字符串。 先看方法的簽名 slice(start, end); // 參數可為負數。第二個參數是指定結束位...
摘要:在該索引以為基數處結束提取字符串。非負數可選一個到字符串長度之間的整數。非負數若和相等,則返回一個空字符串。輸出此外對于三者的執行效率,網上有個對一個長度為的字符串做截取測試,地址測試結果如圖所示文章首發于 在js中,需要經常處理字符串的問題,如果需要截取字符串的話,我們會選擇slice、substr以及substring,下面就截取字符串的問題來細說一下。 slice slice(s...
摘要:截取字符串用法用數學表達式表達區間的話就是截取和上面結果一樣會自動進行掉換,但是和必須要都為正數。 1.substring(start,end) -> 截取字符串 用法: 1.substring(start,end) -> 用數學表達式表達區間的話就是截取[start,end);2.substring(start,end),end > start -> 和上面結果一樣,會自動進行掉換...
摘要:最近在梳理的基礎,首先從數組和字符串開始。如果超出有效范圍與字符串長度減一的索引值返回空字符串返回對象內第一次出現子字符串位置。將字符串以參數分割為數組方法返回一個字符串,該字符串中的字母被轉換成小寫。 最近在梳理js的基礎,首先從數組和字符串開始。 string 常用方法: 1.substring(start開始位置的索引,end結束位置索引) 截取的位置不包含結束位置的字符,只寫一...
閱讀 2312·2021-11-17 09:33
閱讀 843·2021-10-13 09:40
閱讀 574·2019-08-30 15:54
閱讀 778·2019-08-29 15:38
閱讀 2417·2019-08-28 18:15
閱讀 2475·2019-08-26 13:38
閱讀 1842·2019-08-26 13:36
閱讀 2129·2019-08-26 11:36