天天看點

JS截取字元串:slice(),substring()和substr()

JS提供三個截取字元串的方法,分别是:slice(),substring()和substr(),它們都可以接受一個或兩個參數:

一個參數時,三個方法都表示從參數值所示的開始位置一直截取到字元串末尾.

兩個參數時,

slice(),第一個參數代表開始位置,第二個參數代表結束位置的下一個位置,截取出來的字元串的長度為第二個參數與第一個參數之間的差;若參數值為負數,則将該值加上字元串長度後轉為正值;若第一個參數等于大于第二個參數,則傳回空字元串.

substring(),第一個參數代表開始位置,第二個參數代表結束位置的下一個位置;若參數值為負數,則将該值轉為0;兩個參數中,取較小值作為開始位置,截取出來的字元串的長度為較大值與較小值之間的差.

substr(),第一個參數代表開始位置,第二個參數代表截取的長度.

下面我們先來看個例子(注意:字元串的位置從0開始):

<script language="javascript">
var stmp = "rcinn.cn";
//使用一個參數
alert(stmp.slice(3));//從第4個字元開始,截取到最後個字元;傳回"nn.cn"
alert(stmp.substring(3));//從第4個字元開始,截取到最後個字元;傳回"nn.cn"
//使用兩個參數
alert(stmp.slice(1,5))//從第2個字元開始,到第5個字元;傳回"cinn"
alert(stmp.substring(1,5));//從第2個字元開始,到第5個字元;傳回"cinn"
//如果隻用一個參數并且為0的話,那麼傳回整個參數
alert(stmp.slice(0));//傳回整個字元串
alert(stmp.substring(0));//傳回整個字元串
//傳回第一個字元
alert(stmp.slice(0,1));//傳回"r"
alert(stmp.substring(0,1));//傳回"r"
//在上面的例子中我們可以看出slice()和substring()的用法是相同的,傳回的值也是一樣的,但當參數為負數時,他們的傳回值卻不一樣,看下面的例子
alert(stmp.slice(2,-5));//傳回"i"
alert(stmp.substring(2,-5));//傳回"rc"
//從上面兩個例子可以看出slice(2,-5)實際上是slice(2,3),負5加上字元串長度8轉換成正3(若第一位數字等于或大于第二位數字,則傳回空字元串);而substring(2,-5)實際上是substring(2,0),負數轉換為0,substring總是把較小的數作為起始位置。
alert(stmp.substring(1,5))//從第2個字元開始,到第5個字元;傳回"cinn"
alert(stmp.substr(1,5));//從第2個字元開始,截取5個字元;傳回"cinn."
</script>