欧美日韩国产一区二区|qovd片|小明个人发布看看|小浪货你夹真紧水又多|老头把我添高潮了A片故|99热久久精品国产一区二区|久久久春色AV

深入淺析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性

在截取字符串時(shí)常常會(huì)用到substr()、substring()、slice()方法,有時(shí)混淆之間的用法 , 故總結(jié)下 。

閱讀目錄
slice()
substring()
substr()
總結(jié)

slice()

定義:接受一個(gè)或者兩個(gè)參數(shù),第一個(gè)參數(shù)指定子字符串的開始位置 。第二個(gè)參數(shù)表示子字符串的結(jié)束位置(不包括結(jié)束位置的那個(gè)字符),如果沒有傳遞第二個(gè)參數(shù),則將字符串的長度作為結(jié)束位置 。

1、傳遞參數(shù)為正值情況:

var str ="helloWorld";// 一個(gè)參數(shù) , 則將字符串長度作為結(jié)束位置alert(str.slice(3)); // "loWorld"http:// 兩個(gè)參數(shù),7位置上的字符為"r",但不包括結(jié)束位置的字符alert(str.slice(3,7)); // "loWo" 2、傳遞參數(shù)為負(fù)值的情況:

slice()方法會(huì)將傳入的負(fù)值與字符串長度相加 。var str ="helloWorld";// 一個(gè)參數(shù),與字符串長度相加即為slice(7)alert(str.slice(-3)); // "rld"http:// 兩個(gè)參數(shù),與字符串長度相加即為slice(3,6)alert(str.slice(3,-4)); // "loW" 3、第二個(gè)參數(shù)比第一個(gè)參數(shù)值小的情況:

slice()方法傳入的第二個(gè)參數(shù)比第一個(gè)參數(shù)小的話,則返回空字符串 。

var str ="helloWorld";alert(str.slice(5,3)); // "" 4、IE兼容性

在IE8瀏覽器測(cè)試下 , 沒啥問題,行為與現(xiàn)代瀏覽器一致 。

substring()

定義:接受一個(gè)或者兩個(gè)參數(shù) , 第一個(gè)參數(shù)指定子字符串的開始位置 。第二個(gè)參數(shù)表示子字符串的結(jié)束位置(不包括結(jié)束位置的那個(gè)字符),如果沒有傳遞第二個(gè)參數(shù) , 則將字符串的長度作為結(jié)束位置 。

1、傳遞參數(shù)為正值情況:與slice()方法行為相同的

var str ="helloWorld";// 一個(gè)參數(shù),則將字符串長度作為結(jié)束位置alert(str.substring(3)); // "loWorld"http:// 兩個(gè)參數(shù),7位置上的字符為"r",但不包括結(jié)束位置的字符alert(str.substring(3,7)); // "loWo" 2、傳遞參數(shù)為負(fù)值的情況:

substring()方法會(huì)把所有負(fù)值參數(shù)轉(zhuǎn)換為0 。來看下例子:

var str ="helloWorld";// 兩個(gè)參數(shù),-4會(huì)轉(zhuǎn)換為0,相當(dāng)于substring(3,0) --即為 substring(0,3)alert(str.substring(3,-4)); // "hel" substring()方法會(huì)將較小的數(shù)作為開始位置,將較大的數(shù)作為結(jié)束位置 。如上面的例子substring(3,0) 與substring(0,3)是一樣效果的 。

4、IE兼容性

在IE8瀏覽器測(cè)試下,沒啥問題,行為與現(xiàn)代瀏覽器一致 。

substr()

定義:接受一個(gè)或者兩個(gè)參數(shù) , 第一個(gè)參數(shù)指定子字符串的開始位置 。第二個(gè)參數(shù)跟之前的方法有些區(qū)別,表示返回的字符個(gè)數(shù) 。如果沒有傳遞第二個(gè)參數(shù),則將字符串的長度作為結(jié)束位置 。來看例子:

1、傳遞參數(shù)為正值情況:

var str ="helloWorld";// 一個(gè)參數(shù),則將字符串長度作為結(jié)束位置alert(str.substr(3)); // "loWorld"http:// 兩個(gè)參數(shù),從位置3開始截取后面7個(gè)字符alert(str.substr(3,7)); // "loWorld" 2、傳遞參數(shù)為負(fù)值的情況:

substr()方法會(huì)將負(fù)的第一個(gè)參數(shù)加上字符串的長度,而將負(fù)的第二個(gè)參數(shù)轉(zhuǎn)換為0 。

var str ="helloWorld";// 將第一個(gè)負(fù)的參數(shù)加上字符串的長度---//即為:substr(7,5) ,從位置7開始向后截取5個(gè)字符alert(str.substr(-3,5)); // "rld"http:// 將第二個(gè)參數(shù)轉(zhuǎn)換為0// 即為:substr(3,0),即從位置3截取0個(gè)字符串,則返回空alert(str.substr(3,-2)); // "" 3、IE兼容性

substr()方法傳遞負(fù)值的情況下會(huì)存在問題,會(huì)返回原始的字符串 。IE9修復(fù)了此問題 。

總結(jié)

在傳遞正值參數(shù)情況下,slice() 和 substring () 行為是一致的,substr()方法在第二個(gè)參數(shù)上會(huì)容易混淆

在傳遞負(fù)值參數(shù)情況下 , slice() 方法是通過字符串長度相加,符合一般思維,substring()第二個(gè)參數(shù)轉(zhuǎn)換為0會(huì)容易出問題,起始位置會(huì)容易變更,substr() 方法負(fù)值情況下會(huì)出現(xiàn)IE兼容性問題 。

綜上,小弟一般推薦使用slice()方法 。
下面給大家介紹slice,substr和substring的區(qū)別
【深入淺析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性】首先,他們都接收兩個(gè)參數(shù),slice和substring接收的是起始位置和結(jié)束位置(不包括結(jié)束位置) , 而substr接收的則是起始位置和所要返回的字符串長度 。直接看下面例子:

var test = ’hello world’;alert(test.slice(,));//o walert(test.substring(,));//o walert(test.substr(,));//o world 這里有個(gè)需要注意的地方就是:substring是以兩個(gè)參數(shù)中較小一個(gè)作為起始位置,較大的參數(shù)作為結(jié)束位置 。

如:
alert(test.substring(7,4));//o w 接著,當(dāng)接收的參數(shù)是負(fù)數(shù)時(shí),slice會(huì)將它字符串的長度與對(duì)應(yīng)的負(fù)數(shù)相加,結(jié)果作為參數(shù);substr則僅僅是將第一個(gè)參數(shù)與字符串長度相加后的結(jié)果作為第一個(gè)參數(shù);substring則干脆將負(fù)參數(shù)都直接轉(zhuǎn)換為0 。測(cè)試代碼如下:
var test = ’hello world’;alert(test.slice(-));//rldalert(test.substring(-));//hello worldalert(test.substr(-));//rldalert(test.slice(,-));//lo walert(test.substring(,-)); //helalert(test.substr(,-));//空字符串 注意:IE對(duì)substr接收負(fù)值的處理有錯(cuò),它會(huì)返回原始字符串 。
您可能感興趣的文章:JavaScript中解決多瀏覽器兼容性23個(gè)問題的快速解決方法常用原生JS兼容性寫法匯總JavaScript 瀏覽器兼容性總結(jié)及常用瀏覽器兼容性分析JS實(shí)現(xiàn)兼容性較好的隨屏滾動(dòng)效果JS實(shí)現(xiàn)兼容性好,自動(dòng)置頂?shù)奶詫殤腋」ぞ邫谛Ч鹙avascript中setAttribute()函數(shù)使用方法及兼容性css與javascript跨瀏覽器兼容性總結(jié)js日期對(duì)象兼容性的處理方法Javascript 多瀏覽器兼容性問題及解決方案JavaScript的兼容性與調(diào)試技巧

相關(guān)經(jīng)驗(yàn)推薦