欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2015年12月16日 09:11:44   作者:_燎原之火  
這篇文章主要介紹了JavaScript字符串操作方法 slice、substr、substring及其IE兼容性 的相關(guān)資料,需要的朋友可以參考下

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

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

slice()

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

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

var str ="helloWorld";
// 一個參數(shù),則將字符串長度作為結(jié)束位置
alert(str.slice(3)); // "loWorld"
// 兩個參數(shù),7位置上的字符為"r",但不包括結(jié)束位置的字符
alert(str.slice(3,7)); // "loWo" 

2、傳遞參數(shù)為負值的情況:

slice()方法會將傳入的負值與字符串長度相加。
 var str ="helloWorld";
// 一個參數(shù),與字符串長度相加即為slice(7)
alert(str.slice(-3)); // "rld"
// 兩個參數(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ù)表示子字符串的結(jié)束位置(不包括結(jié)束位置的那個字符),如果沒有傳遞第二個參數(shù),則將字符串的長度作為結(jié)束位置。

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

var str ="helloWorld";
// 一個參數(shù),則將字符串長度作為結(jié)束位置
alert(str.substring(3)); // "loWorld"
// 兩個參數(shù),7位置上的字符為"r",但不包括結(jié)束位置的字符
alert(str.substring(3,7)); // "loWo" 

2、傳遞參數(shù)為負值的情況:

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

var str ="helloWorld";
// 兩個參數(shù),-4會轉(zhuǎn)換為0,相當于substring(3,0) -->即為 substring(0,3)
alert(str.substring(3,-4)); // "hel" 

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

4、IE兼容性

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

substr()

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

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

var str ="helloWorld";
// 一個參數(shù),則將字符串長度作為結(jié)束位置
alert(str.substr(3)); // "loWorld"
// 兩個參數(shù),從位置3開始截取后面7個字符
alert(str.substr(3,7)); // "loWorld" 

2、傳遞參數(shù)為負值的情況:

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

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

3、IE兼容性

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

總結(jié)

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

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

綜上,小弟一般推薦使用slice()方法。

下面給大家介紹slice,substr和substring的區(qū)別

首先,他們都接收兩個參數(shù),slice和substring接收的是起始位置和結(jié)束位置(不包括結(jié)束位置),而substr接收的則是起始位置和所要返回的字符串長度。直接看下面例子:

 var test = 'hello world';
  alert(test.slice(,));    //o w
  alert(test.substring(,));   //o w
  alert(test.substr(,));   //o world 

這里有個需要注意的地方就是:substring是以兩個參數(shù)中較小一個作為起始位置,較大的參數(shù)作為結(jié)束位置。

如:

alert(test.substring(7,4));   //o w 

接著,當接收的參數(shù)是負數(shù)時,slice會將它字符串的長度與對應(yīng)的負數(shù)相加,結(jié)果作為參數(shù);substr則僅僅是將第一個參數(shù)與字符串長度相加后的結(jié)果作為第一個參數(shù);substring則干脆將負參數(shù)都直接轉(zhuǎn)換為0。測試代碼如下:

var test = 'hello world';  
alert(test.slice(-));   //rld  
alert(test.substring(-));  //hello world  
alert(test.substr(-));  //rld  
alert(test.slice(,-));  //lo w  
alert(test.substring(,-)); //hel  
alert(test.substr(,-));  //空字符串 

 注意:IE對substr接收負值的處理有錯,它會返回原始字符串。

相關(guān)文章

  • Servlet實現(xiàn)文件上傳,可多文件上傳示例

    Servlet實現(xiàn)文件上傳,可多文件上傳示例

    本篇文章主要介紹了Servlet實現(xiàn)文件上傳,可多文件上傳示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • JS溫故而知新之變量提升和時間死區(qū)

    JS溫故而知新之變量提升和時間死區(qū)

    這篇文章主要給大家介紹了關(guān)于JS溫故而知新之變量提升和時間死區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • JS判斷是否長按某一鍵的方法

    JS判斷是否長按某一鍵的方法

    這篇文章主要介紹了JS判斷是否長按某一鍵的方法,涉及JavaScript針對鍵盤按鍵的判斷及響應(yīng)操作技巧,需要的朋友可以參考下
    2016-03-03
  • js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單實例

    js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單實例

    這篇文章主要介紹了js實現(xiàn)的四級左側(cè)網(wǎng)站分類菜單,實例分析了javascript操作頁面元素實現(xiàn)tab切換的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • javascript屬性訪問表達式用法分析

    javascript屬性訪問表達式用法分析

    這篇文章主要介紹了javascript屬性訪問表達式用法,實例分析了javascript屬性訪問表達式的功能與使用方法,需要的朋友可以參考下
    2015-04-04
  • 微信小程序scroll-view錨點鏈接滾動跳轉(zhuǎn)功能

    微信小程序scroll-view錨點鏈接滾動跳轉(zhuǎn)功能

    這篇文章主要介紹了微信小程序scroll-view錨點鏈接滾動跳轉(zhuǎn)功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • JS組件福利大放送 推薦12款好用的Bootstrap組件

    JS組件福利大放送 推薦12款好用的Bootstrap組件

    Bootstrap組件福利大放送,這篇文章主要為大家推薦了幾款好用的Bootstrap組件,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 微信小程序sessionid不一致問題解決

    微信小程序sessionid不一致問題解決

    這篇文章主要介紹了微信小程序sessionid不一致問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • JavaScript Date對象詳解

    JavaScript Date對象詳解

    這篇文章主要為大家詳細介紹了JavaScript Date對象,介紹 Date 日期和時間對象的操作,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 簡單聊聊Js中的常見錯誤類型

    簡單聊聊Js中的常見錯誤類型

    bug是應(yīng)用程序的重要組成部分,編碼過程也是發(fā)現(xiàn)bug,然后解決bug的過程,下面這篇文章主要給大家介紹了關(guān)于Js中常見錯誤類型的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論