javascript中String類的subString()方法和slice()方法
更新時間:2011年05月24日 23:45:06 作者:
最近在看《Javascript高級程序設(shè)計(jì)》一書,在書中發(fā)現(xiàn)一些以前沒有接觸過的且比較實(shí)用的技巧和知識點(diǎn),想通過博客記錄一下,以加深記憶。
在該書2.8.4節(jié)中講到String類中的subString()方法和slice()方法,其用法和返回結(jié)果都基本相同,如下示例:
var strObj = new String("hello world");
alert(strObj.slice(3)); // 輸出結(jié)果:"ol world"
alert(strObj.subString(3)); // 輸出結(jié)果:"ol world"
alert(strObj.slice(3, 7)); // 輸出結(jié)果:"lo w"
alert(strObj.subString(3,7)); // 輸出結(jié)果:"lo w"
由以上代碼的輸出結(jié)果可已看出,slice()方法和subString()方調(diào)用方法法和輸出結(jié)果完全一樣,這兩種方法返回的都是要處理的字符串的子串,都接受一個或兩個參數(shù),第一個參數(shù)是要獲取的子串的起始位置,第二個參數(shù)是要獲取子串的終止位置,如果第二個參數(shù)省略終止位置就默認(rèn)為字符串的長度,且兩個方法都不改變String對象自身的值。
為什么有兩個功能完全相同的方法呢?事實(shí)上,這兩個方法并不完全相同,不過只在參數(shù)為負(fù)值時,他們處理參數(shù)的方式稍有不同。
對于負(fù)數(shù)參數(shù),slice()方法會用字符串的長度加上參數(shù),subString()方法將其作為0處理,例如:
var strObj = new String("hello world");
alert(strObj.slice(-3)); // 輸出結(jié)果:"rld"
alert(strObj.subString(-3)); // 輸出結(jié)果:"hello world"
alert(strObj.slice(3,-4)); // 輸出結(jié)果:"lo w"
alert(strObj.subString(3,-4)) // 輸出結(jié)果:"hel"
這樣既可看到slice()和subString()方法的主要不同。當(dāng)只有參數(shù)-3時,slice()返回"rld",subString()則返回"hello world"。這是因?yàn)閷τ谧址?hello world",slice(-3)將被轉(zhuǎn)換成slice(8),而subString(-3)則轉(zhuǎn)化成subString(0)。同樣,使用3和-4差別也是很明顯。slice()方法將被轉(zhuǎn)換成slice(3,7),與前面的例子相同,返回"lo w"。而subString()方法則將這個兩個參數(shù)解釋為subString(0,3),實(shí)際上是:subString(0,3),因?yàn)閟ubString()總是把較小的參數(shù)作為起始位,較大的數(shù)字最為終止位。
復(fù)制代碼 代碼如下:
var strObj = new String("hello world");
alert(strObj.slice(3)); // 輸出結(jié)果:"ol world"
alert(strObj.subString(3)); // 輸出結(jié)果:"ol world"
alert(strObj.slice(3, 7)); // 輸出結(jié)果:"lo w"
alert(strObj.subString(3,7)); // 輸出結(jié)果:"lo w"
由以上代碼的輸出結(jié)果可已看出,slice()方法和subString()方調(diào)用方法法和輸出結(jié)果完全一樣,這兩種方法返回的都是要處理的字符串的子串,都接受一個或兩個參數(shù),第一個參數(shù)是要獲取的子串的起始位置,第二個參數(shù)是要獲取子串的終止位置,如果第二個參數(shù)省略終止位置就默認(rèn)為字符串的長度,且兩個方法都不改變String對象自身的值。
為什么有兩個功能完全相同的方法呢?事實(shí)上,這兩個方法并不完全相同,不過只在參數(shù)為負(fù)值時,他們處理參數(shù)的方式稍有不同。
對于負(fù)數(shù)參數(shù),slice()方法會用字符串的長度加上參數(shù),subString()方法將其作為0處理,例如:
復(fù)制代碼 代碼如下:
var strObj = new String("hello world");
alert(strObj.slice(-3)); // 輸出結(jié)果:"rld"
alert(strObj.subString(-3)); // 輸出結(jié)果:"hello world"
alert(strObj.slice(3,-4)); // 輸出結(jié)果:"lo w"
alert(strObj.subString(3,-4)) // 輸出結(jié)果:"hel"
這樣既可看到slice()和subString()方法的主要不同。當(dāng)只有參數(shù)-3時,slice()返回"rld",subString()則返回"hello world"。這是因?yàn)閷τ谧址?hello world",slice(-3)將被轉(zhuǎn)換成slice(8),而subString(-3)則轉(zhuǎn)化成subString(0)。同樣,使用3和-4差別也是很明顯。slice()方法將被轉(zhuǎn)換成slice(3,7),與前面的例子相同,返回"lo w"。而subString()方法則將這個兩個參數(shù)解釋為subString(0,3),實(shí)際上是:subString(0,3),因?yàn)閟ubString()總是把較小的參數(shù)作為起始位,較大的數(shù)字最為終止位。
您可能感興趣的文章:
- javascript中substr,substring,slice.splice的區(qū)別說明
- js substr、substring和slice使用說明小記
- js字符串截取函數(shù)substr substring slice使用對比
- JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較
- javascript中slice(),splice(),split(),substring(),substr()使用方法
- javascript中substring()、substr()、slice()的區(qū)別
- 深入淺析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
相關(guān)文章
bootstrap校驗(yàn)laydate起止日期聯(lián)動失效問題及解決方法
這篇文章主要介紹了bootstrap校驗(yàn)laydate起止日期聯(lián)動失效問題,項(xiàng)目中用到bootstrapValidator,以及l(fā)aydate(by:賢心,插件效果美觀),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
document.all還是document.getElementsByName?
document.all還是document.getElementsByName?...2006-07-07
Javascript將字符串日期格式化為yyyy-mm-dd的方法
日期格式化相信對于大家來說再熟悉不過,最近工作中自己利用Javascript就寫了一個,現(xiàn)在將實(shí)現(xiàn)的代碼分享給大家,希望對有需要的朋友們能有所幫助,感興趣的朋友們下面來一起看看吧。2016-10-10
JS對象轉(zhuǎn)換為Jquery對象實(shí)現(xiàn)代碼
很多新手朋友們都不知道js對象如何轉(zhuǎn)換為jquery對象,其實(shí)很簡單,下面有個不錯的示例,感興趣的朋友可以參考下2013-12-12
JavaScript手寫源碼之實(shí)現(xiàn)arrify轉(zhuǎn)數(shù)組
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)arrify轉(zhuǎn)數(shù)組,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaScript有一點(diǎn)的幫助,需要的可以參考一下2023-02-02
淺談在fetch方法中添加header后遇到的預(yù)檢請求問題
下面小編就為大家?guī)硪黄獪\談在fetch方法中添加header后遇到的預(yù)檢請求問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

