天天看點

python截取字元串函數substr_js字元串截取函數slice()、substring()、substr()

在js中字元截取函數有常用的三個slice()、substring()、substr()了,下面我來給大家介紹slice()、substring()、substr()函數在字元截取時的一些用法與差別吧。

取字元串的三個函數:slice(start,[end]),substring(start,[end])和substr(start,[length])

相關屬性:

slice()

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

substring()

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

substr()

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

PS:字元串都從0開始計起

例子:

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."

substr 和 substring方法的差別

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));//-----------""

函數: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″);

}