js字符串截取函數(shù)slice、substring和substr的比較
在js中字符截取函數(shù)有常用的三個(gè)slice()、substring()、substr()了,下面我來給大家介紹slice()、substring()、substr()函數(shù)在字符截取時(shí)的一些用法與區(qū)別吧。
取字符串的三個(gè)函數(shù):slice(start,[end]),substring(start,[end])和substr(start,[length])
相關(guān)屬性:
slice()
第一個(gè)參數(shù)代表開始位置,第二個(gè)參數(shù)代表結(jié)束位置的下一個(gè)位置,截取出來的字符串的長度為第二個(gè)參數(shù)與第一個(gè)參數(shù)之間的差;若參數(shù)值為負(fù)數(shù),則將該值加上字符串長度后轉(zhuǎn)為正值;若第一個(gè)參數(shù)等于大于第二個(gè)參數(shù),則返回空字符串.
substring()
第一個(gè)參數(shù)代表開始位置,第二個(gè)參數(shù)代表結(jié)束位置的下一個(gè)位置;若參數(shù)值為負(fù)數(shù),則將該值轉(zhuǎn)為0;兩個(gè)參數(shù)中,取較小值作為開始位置,截取出來的字符串的長度為較大值與較小值之間的差.
substr()
第一個(gè)參數(shù)代表開始位置,第二個(gè)參數(shù)代表截取的長度
PS:字符串都從0開始計(jì)起
例子:
<script type="text/javascript"> var stmp = "rcinn.cn"; //使用一個(gè)參數(shù) alert(stmp.slice(3));//從第4個(gè)字符開始,截取到最后個(gè)字符;返回"nn.cn" alert(stmp.substring(3));//從第4個(gè)字符開始,截取到最后個(gè)字符;返回"nn.cn" //使用兩個(gè)參數(shù) alert(stmp.slice(1,5))//從第2個(gè)字符開始,到第5個(gè)字符;返回"cinn" alert(stmp.substring(1,5));//從第2個(gè)字符開始,到第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加上字符串長度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è)字符開始,到第5個(gè)字符;返回"cinn" alert(stmp.substr(1,5));//從第2個(gè)字符開始,截取5個(gè)字符;返回"cinn." </script>
substr 和 substring方法的區(qū)別
<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>
函數(shù):split()
功能:使用一個(gè)指定的分隔符把一個(gè)字符串分割存儲(chǔ)到數(shù)組
例子:
str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //arr是一個(gè)包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的數(shù)組
函數(shù):John()
功能:使用您選擇的分隔符將一個(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)上看到另一種非常簡單的方法,代碼如下:
function func(s, n) { return s.replace(/([^x00-xff])/g, “$1a”).slice(0, n).replace(/([^x00-xff])a/g, “$1″); }
這個(gè)方法非常巧妙,而且基本上是正確的。說“基本上”是因?yàn)樗谌 ?23漢字測試”左邊長度為 6 的子串時(shí),它返回的是“123漢字”,而不是“123漢”。當(dāng)然,這也并不一定就是問題,某些情況下需求可能就是這樣。這個(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″); }
以上就是本文的全部內(nèi)容,希望對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。
- 詳解JS截取字符串的三個(gè)方法substring,substr,slice
- JS中substring與substr的用法
- 深入淺析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
- js中substring和substr兩者區(qū)別和使用方法
- js中substr,substring,indexOf,lastIndexOf,split,replace的用法詳解
- javascript中substring()、substr()、slice()的區(qū)別
- javascript中slice(),splice(),split(),substring(),substr()使用方法
- js中substring使用示例詳解
相關(guān)文章
js將當(dāng)前時(shí)間格式轉(zhuǎn)換成時(shí)間搓(自寫)
將時(shí)間轉(zhuǎn)換成時(shí)間搓的方法有很多,在本文為大家介紹下使用js將當(dāng)前時(shí)間轉(zhuǎn)換成時(shí)間搓 例如2013-09-11 12:12:12,感興趣的朋友可以參考下2013-09-09javascript+css實(shí)現(xiàn)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了javascript+css實(shí)現(xiàn)進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03一步步教你利用Canvas對(duì)圖片進(jìn)行處理
這篇文章主要給大家介紹了關(guān)于利用Canvas對(duì)圖片進(jìn)行處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09用javascript實(shí)現(xiàn)截取字符串包含中文處理的函數(shù)
一直不知道js可以截取中文字符,呵呵,原理用正則表達(dá)式,匹配中文的長度,中文算兩個(gè),因?yàn)樗阋粋€(gè),是個(gè)好東西,推薦大家收藏2008-04-04JS實(shí)現(xiàn)的定時(shí)器展示簡單秒表、頁面彈框及跳轉(zhuǎn)操作完整示例
這篇文章主要介紹了JS實(shí)現(xiàn)的定時(shí)器展示簡單秒表、頁面彈框及跳轉(zhuǎn)操作,結(jié)合實(shí)例形式分析了JavaScript時(shí)間函數(shù)及頁面元素動(dòng)態(tài)操作相關(guān)使用技巧,需要的朋友可以參考下2020-01-01js獲取光標(biāo)位置和設(shè)置文本框光標(biāo)位置示例代碼
本實(shí)例描述了如何用Javascript來控制和獲取文本框/文本域的鼠標(biāo)光標(biāo)位置,以下代碼兼容IE和Chrome,F(xiàn)irefox,大家參考使用吧2014-01-01