首頁 > web前端 > js教程 > 主體

常常會用到的截取字串substr()、substring()、slice()方法詳解_javascript技巧

WBOY
發布: 2016-05-16 15:25:26
原創
1934 人瀏覽過

slice()

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

1、傳遞參數為正值情況:

var str ="helloWorld";

// 一个参数,则将字符串长度作为结束位置
alert(str.slice(3)); // "loWorld"

// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.slice(3,7)); // "loWo"

登入後複製

2、傳遞參數為負值的情況:

slice()方法會將傳入的負值與字串長度相加。

var str ="helloWorld";

// 一个参数,与字符串长度相加即为slice(7)
alert(str.slice(-3)); // "rld"

// 两个参数,与字符串长度相加即为slice(3,6)
alert(str.slice(3,-4)); // "loW"

登入後複製

3、第二個參數比第一個參數值小的情況:

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

var str ="helloWorld";
alert(str.slice(5,3)); // ""
登入後複製

4、IE相容性

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

substring()

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

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

var str ="helloWorld";

// 一个参数,则将字符串长度作为结束位置
alert(str.substring(3)); // "loWorld"

// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.substring(3,7)); // "loWo"

登入後複製

2、傳遞參數為負值的情況:

substring()方法会把所有负值参数转换为0。来看下例子:

var str ="helloWorld";

// 两个参数,-4会转换为0,相当于substring(3,0) -->即为 substring(0,3)
alert(str.substring(3,-4)); // "hel"

登入後複製

substring()方法會將較小的數作為開始位置,將較大的數作為結束位置。如同上面的例子substring(3,0) 與substring(0,3)是一樣效果的。

4、IE相容性

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

substr()

定義:接受一個或兩個參數,第一個參數指定子字串的起始位置。第二個參數跟之前的方法有些差別,表示傳回的字元個數。如果沒有傳遞第二個參數,則將字串的長度作為結束位置。來看範例:

1、傳遞參數為正值情況:

var str ="helloWorld";

// 一个参数,则将字符串长度作为结束位置
alert(str.substr(3)); // "loWorld"

// 两个参数,从位置3开始截取后面7个字符
alert(str.substr(3,7)); // "loWorld"

登入後複製

2、傳遞參數為負值的情況:

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

var str ="helloWorld";

// 将第一个负的参数加上字符串的长度--->
//即为:substr(7,5) ,从位置7开始向后截取5个字符
alert(str.substr(-3,5)); // "rld"

// 将第二个参数转换为0
// 即为:substr(3,0),即从位置3截取0个字符串,则返回空
alert(str.substr(3,-2)); // ""

登入後複製

3、IE相容性

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

總結

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

在傳遞負值參數情況下,slice() 方法是透過字串長度相加,符合一般思維,substring()第二個參數轉換為0會容易出問題,起始位置會容易變更,

substr() 方法負值情況下會出現IE相容性問題。

綜上,小弟一般建議使用slice()方法。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板