前端開發:JS中截取字符串的用法總結

2021-12-29 程序猿by三掌柜

前言

        在前端開發過程中,對JS相關的字符串處理可謂是家常便飯,對字符串對處理也是前端開發過程中使用頻率非常高的知識點之一,對從後臺獲取到的字符串進行二次處理也是非常普遍的需求,那麼本文就來分享一下在前端開發過程中對字符串截取處理相關的知識點。

知識點

        關於在JS中截取字符串的方法有三種:substring()、substr()、slice()。這三種方法在平時開發過程中可能都用到過,但是對於這些方法的具體使用和區別會有點蒙圈,尤其是方法substring()和substr(),二者非常相似,那麼接下來就來具體的看一下異同點。

相同點

        substring()、substr()、slice()這三個方法都可以對JS中的字符串進行截取處理,並且返回一個新的字符串,也就是說它們不會對原字符串進行修改。

不同點

        substring()、substr()、slice()這三個方法的不同之處在於參數的不同,那麼接下來就來分享一下具體的不同點對比。

一、substring()方法

語法:string.substring(from, to) 

定義和用法:

substring() 方法用於提取字符串中介於兩個指定下標之間的字符。

substring() 方法返回的子串包括「開始」處的字符,但不包括「結束」處的字符。

釋義:substring()方法從 from 位置截取到 to 位置,to 可選擇,沒有設置時默認到字符串的最末尾。

參數:

參數

描述

from

必需。一個非負的整數,規定要提取的子串的第一個字符在 string 中的位置。

to

可選。一個非負的整數,比要提取的子串的最後一個字符在 string 中的位置多 1。如果省略此參數,那麼返回的子串會一直到字符串的結尾。

說明

1.substring() 方法返回的子串包括 start 處的字符,但不包括 stop 處的字符;

2.若 start 與 stop 相等,則該方法返回的就是一個空字符串(即長度為 0 的字符串);

3若 start 比 stop 大,則該方法在提取子串之前會先交換這兩個參數;

4.若 start 和 stop 有負數,則會把該參數自動轉為0,然後繼續進行上述的規則;

5.若 start 和 stop 有正小數,則會把該參數向下取整,然後繼續進行上述的規則;

6.若 start 和 stop 有字符串,則會先進行parseInt(),如果轉換結果為NaNa,那麼就轉換為0,其餘情況繼續進行上述的規則。

示例:

1、

string.substring(4)+"<br>"  

2、

3、

var a = '0123456789』; a.substring(1,5);     

4、

 var a = '0123456789』; a.substring(1,1);    // start 與 stop 相等,輸出結果:」」

5、

var a = '0123456789』;a.substring(5,1) ;    // start 比 stop 大,但是最後的輸出結果還是:」1234"

6、

var a = '0123456789』; a.substring(5,-1);     //start 和 stop 有負數,但是最後的輸出結果還是:"1234"

7、

 var a = '0123456789』; a.substring(5,2.4) ;  // start 和 stop 有正小數, 但是最後的輸出結果是:"234"

8、

 

var a = '0123456789』;a.substring(5,』2.4』);   //  start 和 stop 有字符串, 但是最後的輸出結果是:"234"a.substring(5,』hh』) ;  // start 和 stop 有字符串, 但是最後的輸出結果是:"234"

二、substr()方法

語法:string.substr(start,length)

定義和用法:

substr() 方法可在字符串中抽取從「開始」下標開始的指定數目的字符。

注意:substr() 方法不會改變源字符串。

釋義:substr() 的參數指定的是子串的開始位置和長度,因此它可以替代 substring() 和 slice() 來使用。

參數

參數

描述

start

必需。要抽取的子串的起始下標。必須是數值。如果是負數,那麼該參數聲明從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最後一個字符,-2 指倒數第二個字符,以此類推。

length

可選。子串中的字符數。必須是數值。如果省略了此參數,那麼返回從 string 的開始位置到結尾的字串。

返回值

類型

描述

String

A new string containing the extracted part of the text

說明

該方法與substring()最大的區別在於第二個參數是需要截取字符串的長度,而不是位置。

1.substr() 方法返回的子串從 start 處的字符開始(包括)往後截取length長度,如果超過最末端就到最末端結束;

2.start可以取負值,表示從字符串尾部往頭部開始數(從右到左,注意是從1開始,比如-1 指字符串中最後一個字符),但截取長度還是從左到右,若超過最末端,則就到最末端結束;

3.若length為負值,則會直接當成0處理,最終返回」」;

4.若start或者length為小數,則會截取小數部分;

5.若 start 和 length 有字符串,則會先進行parseInt(),若轉換結果為NaNa,則就轉換為0,其餘情況繼續按照上述規則執行。

示例:

1、

2、

var str="Hello world!";var n=str.substr(3);     

3、

var a = '0123456789』; a.substr(1,5);    a.substr(1,15);   

4、

 var a = '0123456789』; a.substr(-4,2);     //-4表示從右開始數第4個,就是'6',然後取2個長度的字符串,就是'67' ,輸出結果:"67"

5、

 var a = '0123456789』; a.substr(4,-2);     

6、

 var a = '0123456789』; a.substr(1.2,5.2);     // start或者length為小數 , 輸出結果:"12345"

7、

 var a = '0123456789』; a.substr('aa','5') ;    // start 和 length 有字符串 ,輸出結果:"01234"

三、slice()方法

語法:string.slice(start,end)

定義和用法:

slice()方法可提取字符串的某個部分,並以新的字符串返回被提取的部分。

注意:

使用 start(包含) 和 end(不包含) 參數來指定字符串提取的部分。

釋義:

 slice(start,end) 方法用於提取字符串的某個部分(從參數 start 到 end 位置),並以新的字符串返回被提取的部分。類似 substring()。

參數

參數

描述

start

必須。要抽取的片斷的起始下標,第一個字符位置為 0。如果為負數,則從尾部開始截取。

end

可選。緊接著要截取的片段結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。如果該參數是負數,那麼它規定的是從字符串的尾部開始算起的位置。slice(-2) 表示提取原數組中的倒數第二個元素到最後一個元素(包含最後一個元素)。

返回值

說明

該方法的兩個參數均為位置坐標,與subtring()比較像,區別就是該方法支持負數,並且不會交換位置,始終是從start到end,如果該區間不存在,那麼返回''。

1.slice() 方法返回的子串包括 start 位置的字符,但不包括 end 位置的字符;

2.當start或者end為負值時,定位方式和substr()相同,從右往左數,從1開始;

3.start到end的順序始終是從左到右,如果最終start的位置在end的右邊,那麼返回「」;

4.其他情況和substring()處理方式相同,這裡不再贅述。

示例:

1、

2、

3、

 var a = '0123456789』; a.slice(1,5);    

4、

 var a = '0123456789』; a.slice(1,-1);  //start或者end為負值時,起始點從第1(包括)開始,結束點為從右往左數第1個(不包括) ,輸出結果:"12345678"

5、

 var a = '0123456789』; a.slice(2,1);    // start 比 stop 大,2所在的位置是'2',1所在的位置是'1',方向相反,返回為空,輸出結果:"" a.slice(-2,1);    //start或者end為負值時,-2所在的位置是'8',1所在的位置是'1',方向相反,返回為空,輸出結果:"" a.slice(-2,-1);  //start或者end為負值時,-2所在的位置是'8',-1所在的位置是'9',方向正常, 輸出結果:"8"

6、

 var a = '0123456789』; a.slice('xx』,』5.5』);    // start 和 end 有字符串, 輸出結果:"01234"

總結

        通過上述對比分析得出結論,substring()不支持負值,但是substr()和slice()支持負數,而且是從右邊第一位開始計數;substr()的第二個參數表示的是長度,這是它和其他兩種方式最大不同;slice()有非常強的方向性,它是從start=>end對應左=>右。這就是上述在JS中截取字符串的三種方法的具體的異同點,具體使用操作還是要根據實際業務需求來操作。

        以上就是本章的全部內容,歡迎關注三掌柜的微信公眾號「程序猿by三掌柜」,三掌柜的新浪微博「三掌柜666」,歡迎關注!

三掌柜的微信公眾號:

三掌柜的新浪微博:

相關焦點

  • 淺談Java字符串的截取和分割、比較字符串
    一、字符串的截取和分割1.在程序開發中,有些時候我們需要對字符串的截取和分割,String類提供了substring()方法是截取字符串的一部分,split()方法是字符串以給定的字符進行分割成字符串數組。
  • 前端開發:JS中 indexOf() 方法的使用
    前言 在前端開發過程中,對數組的數據進行處理也是比較常見的操作之一,而且對數組進行操作的頻率遠遠大於對
  • Web前端第三季(JavaScript)
    在課程中你可以學習到下面知識:JavaScript中的數據類型JavaScript中的函數JavaScript中的對象JavaScript中的數組表單校驗案例圖片輪播案例廣告彈窗案例本課程是為後續JavaEE後端開發做準備哦!
  • 前端開發js運算符單豎槓「|」的用法和作用及js數據處理
    作者|:haorooms前端博客原文連結:http://www.haorooms.com/post/js_dsg_ysf
  • 前端走進機器學習生態,在 Node.js 中使用 Python
    對於腳本語言的開發者來說,其實並不在意底層是如何實現的,只要上層的語言和接口是我熟悉的就好,因此 Boa 就是為此而誕生的一個 Node.js 庫,它通過橋接 CPython 來讓 JavaScript 具備訪問 Python 生態的能力,另外又藉助於 ES6 新特性,來為使用者提供無縫的開發體驗,那麼到底是如何的體驗呢?
  • Ember.js和Vue.js,哪種框架更適合前端開發?
    隨著前端技術的發展,比起純JavaScript 腳本,大多數開發人員更喜歡使用基於JavaScript的框架來開發Web應用,如Vue、React等。這些框架大大簡化了你的代碼,也使你能夠完成更多的全棧工作。使用什麼類型的框架決定了應用程式的敏捷程度。因此,您必須慎重選擇。在充滿多樣性的前端生態中,有兩個框架十分引人矚目——Ember.js和Vue.js。
  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。前端由於入行門檻低, 更新換代很快, 每年都會有大量新的框架和庫出現, 也有大量庫被淘汰(比如 JQuery, 但是學習它的設計思想很有必要). 所以我們大可不必擔心, 保持自己的學習步伐, 按需學習即可.
  • php中常用的截取整理字符串的幾種方式
    在php代碼中字符串函數是PHP的核心組成部分,有著許多類型對各種字符串處理的一些函數.
  • java開發工程師 javascript的字符串
    字符串是不管在java前端還是後臺中都是用的最多最多的一個數據類型,所有前後臺交互的數據都是字符串String類型。那麼如何來定義String字符串呢,注意,用雙引號或者單引號引起來的一切的數據都是字符串。比如: 所有的這一些,只要用引號引起來了,都是字符串。
  • 5年前端開發經驗的我,寫了本Vue.js實戰開發,開源高清PDF下載
    Vue作為目前發展最迅速的前端框架越來越多的受到前端T程師青睞,Vue社區也是Web前端最活躍的社區之一。更多的公司在轉為Vue框架,但針對Vue優秀權威、實戰的圖書相對欠缺,梁灝著《Vue.js實戰》簡明扼要從實戰出發,結合大量實例詳實地講解Vue各種使用方法。
  • Python中如何截取字符串的內容
    第七十二節:截取字符串字符串實際上也是一個由多個元素組成的集合,所以說也是序列的一種。既然是序列,要截取字符串的內容,我們可以採用一種已經介紹過的序列操作方法—「切片」。使用「切片」方法來截取字符串內容的語法格式是這樣的:string[start:end:step]其中,string就是要截取的字符串;用英文半角的中括號「[ ]」包含參數,三個參數之間使用英文半角冒號「:」分隔;
  • MySQL和Oracle字符串截取函數用法總結(比較)
    點擊上方'倫少的博客'關注與您一起成長前言本文總結MySQL和Oracle的字符串截取函數的用法工作中MySQL和Oracle都用,有時會碰到兩種資料庫SQL用法的不同,就會上網查一下,但是時間久了,就忘記了,好記性不如爛筆頭,所以寫個筆記備忘一下~1、MySql
  • 【開源專訪】Sea.js創始人玉伯的前端開發之路
    在Web應用程式的用戶體驗越來越被重視的今天,前端開發的地位也上升到了前所未有的高度,而隨之而來的也有更多的挑戰。為了將前端開發者繁重的工作變得簡單,框架應運而生。國內也不乏一些非常優秀的前端開發框架。本期【開源專訪】我們邀請到了國內前端大牛玉伯(@玉伯也叫射鵰),請他為我們分享一些關於前端框架、前端開發的那些事,以及前端大牛是如何煉成的。
  • Node.js一年開發經驗總結分享
    Node進階點擊上方 程式設計師成長指北,關注公眾號回復1,加入高級Node交流群大家好,我是 考拉 ,今天來分享一篇 Node.js一年開發者的經驗總結,應該會對剛入門Node.js 不久或者開始學習 Node.js 有疑問的小夥伴有所幫助。
  • 前端面試(原生js篇) - DOM
    一般小公司的面試環節,比較關心框架的熟練程度,以及獨立開發組件的能力但大廠通常有五輪以上的面試,而且對 js 基礎語法很是看重於是我總結了一些關於 js 基礎的面試對話,有的當時沒答上來,就在總結的時候就加了點料忽然覺得又該讀一遍犀牛書了...
  • Go 高效截取字符串的一些思考
    最近我在 Go Forum[1] 中發現了 [SOLVED\] String size of 20 character[2] 的問題,「hollowaykeanho」 給出了相關的答案,而我從中發現了截取字符串的方案並非最理想的方法,因此做了一系列實驗並獲得高效截取字符串的方法,這篇文章將逐步講解我實踐的過程
  • 前端開發為什麼要學Node.js?小白如何深入理解Node.js?
    隨著網際網路的高速發展以及市場需求推動,Node已經成為前端知識棧必備技能之一,千鋒廣州Web大前端老師也發現很多企業在招聘中也會著重考察求職者對Node的掌握程度。有人好奇從事Web前端為什麼要學習Node.js?今天千鋒廣州Web前端培訓老師就給大家詳細的分析一下。
  • 妙:Excel截取字符串中任一段的公式
    截取字符串,同學位都會想到left函數從左邊截、right函數從右邊截、mid函數從中間截取。但遇到這樣的你如何截取呢?
  • Js字符串截取三姐妹:slice(),substr(),substring()
    console.log(demoString.length)  // demoString的length等於12前端開發中,字符串處理算是比較常見的,所以遇到三姐妹的情況也不少,要想輕鬆駕馭三姐妹,那就得摸清三姐妹的性格如何,摸清了性格,之後不就是隨手拿捏,你說是吧,Hia Hia Hia~1、大姐 slice語法:demoString.slice(beginIndex
  • 「Create.js」遊戲開發入門
    如果你是一個前端工程師,擅長JavaScript編程,有做一個小遊戲的需求,那麼強烈的推薦你使用create.js遊戲開發框架。