日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

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

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

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

slice()

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

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

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

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

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

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

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

substring()

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

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

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

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

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

4、IE兼容性

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

substr()

【深入淺析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性】定義:接受一個或者兩個參數(shù) , 第一個參數(shù)指定子字符串的開始位置 。第二個參數(shù)跟之前的方法有些區(qū)別 , 表示返回的字符個數(shù) 。如果沒有傳遞第二個參數(shù) , 則將字符串的長度作為結束位置 。來看例子:

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

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

substr()方法會將負的第一個參數(shù)加上字符串的長度 , 而將負的第二個參數(shù)轉換為0 。

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

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

總結

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

推薦閱讀