摘要
在js中字符截取函數(shù)有常用的三個(gè)slice()膏斤、substring()徐绑、substr()了,下面我來(lái)給大家介紹slice()莫辨、substring()傲茄、substr()函數(shù)在字符截取時(shí)的一些用法與區(qū)別吧。 取字符串的三個(gè)函數(shù):slice(start,[end]),substring(start,[end])和substr(start,[length]) 相關(guān)屬性: slice() 第一個(gè)參數(shù)代表開(kāi)始位置,第二個(gè)參數(shù)代表結(jié)束位置的下一個(gè)位置,截取出來(lái)的字符串的長(zhǎng)度為第二個(gè)參數(shù)與第一個(gè)參數(shù)之間的差;若參數(shù)值為負(fù)數(shù),則將該值加上字符串長(zhǎng)度后轉(zhuǎn)為正值;若第一個(gè)參數(shù)等于大于第二個(gè)參數(shù),則返回空字符串...
在js中字符截取函數(shù)有常用的三個(gè)slice()沮榜、substring()烫幕、substr()了,下面我來(lái)給大家介紹slice()敞映、substring()较曼、substr()函數(shù)在字符截取時(shí)的一些用法與區(qū)別吧。
取字符串的三個(gè)函數(shù):slice(start,[end]),substring(start,[end])和substr(start,[length])
相關(guān)屬性:
slice()
第一個(gè)參數(shù)代表開(kāi)始位置,第二個(gè)參數(shù)代表結(jié)束位置的下一個(gè)位置,截取出來(lái)的字符串的長(zhǎng)度為第二個(gè)參數(shù)與第一個(gè)參數(shù)之間的差;若參數(shù)值為負(fù)數(shù),則將該值加上字符串長(zhǎng)度后轉(zhuǎn)為正值;若第一個(gè)參數(shù)等于大于第二個(gè)參數(shù),則返回空字符串.
substring()
第一個(gè)參數(shù)代表開(kāi)始位置,第二個(gè)參數(shù)代表結(jié)束位置的下一個(gè)位置;若參數(shù)值為負(fù)數(shù),則將該值轉(zhuǎn)為0;兩個(gè)參數(shù)中,取較小值作為開(kāi)始位置,截取出來(lái)的字符串的長(zhǎng)度為較大值與較小值之間的差.
substr()
第一個(gè)參數(shù)代表開(kāi)始位置,第二個(gè)參數(shù)代表截取的長(zhǎng)度
PS:字符串都從0開(kāi)始計(jì)起
例子:
javascript">
var stmp = "rcinn.cn";
//使用一個(gè)參數(shù)
alert(stmp.slice(3));//從第4個(gè)字符開(kāi)始,截取到最后個(gè)字符;返回"nn.cn"
alert(stmp.substring(3));//從第4個(gè)字符開(kāi)始,截取到最后個(gè)字符;返回"nn.cn"
//使用兩個(gè)參數(shù)
alert(stmp.slice(1,5))//從第2個(gè)字符開(kāi)始振愿,到第5個(gè)字符捷犹;返回"cinn"
alert(stmp.substring(1,5));//從第2個(gè)字符開(kāi)始弛饭,到第5個(gè)字符;返回"cinn"
//如果只用一個(gè)參數(shù)并且為0的話萍歉,那么返回整個(gè)參數(shù)
alert(stmp.slice(0));//返回整個(gè)字符串
alert(stmp.substring(0));//返回整個(gè)字符串
//返回第一個(gè)字符
alert(stmp.slice(0,1));//返回"r"
alert(stmp.substring(0,1));//返回"r"
//在上面的例子中我們可以看出slice()和substring()的用法是相同的
//返回的值也是一樣的侣颂,但當(dāng)參數(shù)為負(fù)數(shù)時(shí)愉适,他們的返回值卻不一樣闪幽,看下面的例子
alert(stmp.slice(2,-5));//返回"i"
alert(stmp.substring(2,-5));//返回"rc"
//從上面兩個(gè)例子可以看出slice(2,-5)實(shí)際上是slice(2,3)
//負(fù)5加上字符串長(zhǎng)度8轉(zhuǎn)換成正3(若第一位數(shù)字等于或大于第二位數(shù)字,則返回空字符串);
//而substring(2,-5)實(shí)際上是substring(2,0),負(fù)數(shù)轉(zhuǎn)換為0,substring總是把較小的數(shù)作為起始位置秘蛇。
alert(stmp.substring(1,5))//從第2個(gè)字符開(kāi)始伦籍,到第5個(gè)字符坐慰;返回"cinn"
alert(stmp.substr(1,5));//從第2個(gè)字符開(kāi)始疯特,截取5個(gè)字符淹办;返回"cinn."
substr 和 substring方法的區(qū)別
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));//-----------""
函數(shù):split()
功能:使用一個(gè)指定的分隔符把一個(gè)字符串分割存儲(chǔ)到數(shù)組
例子:
str=”jpg|bmp|gif|ico|png”;
arr=theString.split(”|”);
//arr是一個(gè)包含字符值”jpg”印荔、”bmp”攻询、”gif”从撼、”ico”和”png”的數(shù)組
函數(shù):Join()
功能:使用您選擇的分隔符將一個(gè)數(shù)組合并為一個(gè)字符串
例子:
var delimitedString=myArray.join(delimiter);
var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”);
var portableList=myList.join(”|”);
//結(jié)果是jpg|bmp|gif|ico|png
函數(shù):indexOf()
功能:返回字符串中匹配子串的第一個(gè)字符的下標(biāo)
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
在網(wǎng)上看到另一種非常簡(jiǎn)單的方法,代碼如下:
function func(s, n) {
return s.replace(/([^x00-xff])/g, “$1a”).slice(0, n).replace(/([^x00-xff])a/g, “$1″);
}
這個(gè)方法非常巧妙钧栖,而且基本上是正確的低零。說(shuō)“基本上”是因?yàn)樗谌 ?23漢字測(cè)試”左邊長(zhǎng)度為 6 的子串時(shí),它返回的是“123漢字”拯杠,而不是“123漢”掏婶。當(dāng)然,這也并不一定就是問(wèn)題潭陪,某些情況下需求可能就是這樣气堕。這個(gè)方法還可以再改進(jìn)一下,如下:
function func(s, n) {
return s.slice(0, n).replace(/([^x00-xff])/g, “$1a”).slice(0, n).replace(/([^x00-xff])a/g, “$1″);
}