JS字符串處理函數

在js中字符截取函數有經常使用的三個slice()、substring()、substr()了,下面我來給你們介紹slice()、substring()、substr()函數在字符截取時的一些用法與區別吧。javascript

取字符串的三個函數:slice(start,[end]),substring(start,[end])和substr(start,[length])
相關屬性:php

slice()
第一個參數表明開始位置,第二個參數表明結束位置的下一個位置,截取出來的字符串的長度爲第二個參數與第一個參數之間的差;若參數值爲負數,則將該值加上字符串長度後轉爲正值;若第一個參數等於大於第二個參數,則返回空字符串.html

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

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

PS:字符串都從0開始計起函數

例子:測試

<script type="text/javascript">
      var stmp = "rcinn.cn";
      //使用一個參數
      alert(stmp.slice(3));//從第4個字符開始,截取到最後個字符;返回"nn.cn"
      alert(stmp.substring(3));//從第4個字符開始,截取到最後個字符;返回"nn.cn".net

      //使用兩個參數
      alert(stmp.slice(1,5))//從第2個字符開始,到第5個字符;返回"cinn"
      alert(stmp.substring(1,5));//從第2個字符開始,到第5個字符;返回"cinn"htm

      //若是隻用一個參數而且爲0的話,那麼返回整個參數
      alert(stmp.slice(0));//返回整個字符串
      alert(stmp.substring(0));//返回整個字符串ip

      //返回第一個字符

      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>

substr 和 substring方法的區別

<script type="text/javascript"> 
var str = "0123456789";// 
alert(str.substring(0));//------------"0123456789" 
alert(str.substring(5));//------------"56789" 
alert(str.substring(10));//-----------"" 
alert(str.substring(12));//-----------"" 
alert(str.substring(-5));//-----------"0123456789" 
alert(str.substring(-10));//----------"0123456789" 
alert(str.substring(-12));//----------"0123456789" 
alert(str.substring(0,5));//----------"01234" 
alert(str.substring(0,10));//---------"0123456789" 
alert(str.substring(0,12));//---------"0123456789" 
alert(str.substring(2,0));//----------"01" 
alert(str.substring(2,2));//----------"" 
alert(str.substring(2,5));//----------"234" 
alert(str.substring(2,12));//---------"23456789" 
alert(str.substring(2,-2));//---------"01" 
alert(str.substring(-1,5));//---------"01234" 
alert(str.substring(-1,-5));//--------"" 
alert(str.substr(0));//---------------"0123456789" 
alert(str.substr(5));//---------------"56789" 
alert(str.substr(10));//--------------"" 
alert(str.substr(12));//--------------"" 
alert(str.substr(-5));//--------------"0123456789" 
alert(str.substr(-10));//-------------"0123456789" 
alert(str.substr(-12));//-------------"0123456789" 
alert(str.substr(0,5));//-------------"01234" 
alert(str.substr(0,10));//------------"0123456789" 
alert(str.substr(0,12));//------------"0123456789" 
alert(str.substr(2,0));//-------------"" 
alert(str.substr(2,2));//-------------"23" 
alert(str.substr(2,5));//-------------"23456" 
alert(str.substr(2,12));//------------"23456789" 
alert(str.substr(2,-2));//------------"" 
alert(str.substr(-1,5));//------------"01234" 
alert(str.substr(-1,-5));//-----------"" 
</script>

函數:split() 
功能:使用一個指定的分隔符把一個字符串分割存儲到數組
例子:

str=」jpg|bmp|gif|ico|png」;
arr=theString.split(」|」);
//arr是一個包含字符值」jpg」、」bmp」、」gif」、」ico」和」png」的數組

函數:John() 
功能:使用您選擇的分隔符將一個數組合併爲一個字符串
例子:

var delimitedString=myArray.join(delimiter);
var myList=new Array(」jpg」,」bmp」,」gif」,」ico」,」png」);
var portableList=myList.join(」|」);
//結果是jpg|bmp|gif|ico|png

 函數:indexOf()
功能:返回字符串中匹配子串的第一個字符的下標

var myString=」JavaScript」;
var w=myString.indexOf(」v」);w will be 2
var x=myString.indexOf(」S」);x will be 4
var y=myString.indexOf(」Script」);y will also be 4

var z=myString.indexOf(」key」);z will be -1

在網上看到另外一種很是簡單的方法,代碼以下:

  function func(s, n) {
    return s.replace(/([^x00-xff])/g, 「$1a」).slice(0, n).replace(/([^x00-xff])a/g, 「$1″);
  }

這個方法很是巧妙,並且基本上是正確的。說「基本上」是由於它在取「123漢字測試」左邊長度爲 6 的子串時,它返回的是「123漢字」,而不是「123漢」。固然,這也並不必定就是問題,某些狀況下需求可能就是這樣。這個方法還能夠再改進一下,以下:

 function func(s, n) {     return s.slice(0, n).replace(/([^x00-xff])/g, 「$1a」).slice(0, n).replace(/([^x00-xff])a/g, 「$1″);   }

相關文章
相關標籤/搜索