《深刻理解ES6》筆記——字符串和正則表達式(2)

相比較於第一章變量的聲明,這一章的內容有了一點深度提高,但還不至於很難理解。本章主要講2個知識點,字符串正則表達式前端

字符串

字符串(String)是JavaScript6大原始數據類型。其餘幾個分別是Boolean、Null、Undefined、Number、Symbol(es6新增)。es6

字符串類型在前端開發者,是使用最頻繁的類型之一,網站上可見的各類文案,幾乎都是字符串類型的數據。咱們常常須要使用的操做無非是這麼幾點:讀取字符串、轉換字符串、清空字符串、拼接字符串、截取字符串。正則表達式

在ES5中,字符串類型已經有了很是豐富的應用能力,那麼,在ES6中,ECMA的專家們對字符串作了什麼更新呢?segmentfault

當Unicode引入擴展字符集以後,16位的字符已經不足以知足字符串的發展,因此纔在ES6中更新了Unicode的支持。數組

咱們看看ES6字符串新增的方法函數

UTF-16碼位:ES6強制使用UTF-16字符串編碼。關於UTF-16的解釋請自行百度瞭解。網站

codePointAt():
該方法支持UTF-16,接受編碼單元的位置而非字符串位置做爲參數,返回與字符串中給定位置對應的碼位,即一個整數值。編碼

String.fromCodePoiont():做用與codePointAt相反,檢索字符串中某個字符的碼位,也能夠根據指定的碼位生成一個字符。code

normalize():提供Unicode的標準形式,接受一個可選的字符串參數,指明應用某種Unicode標準形式。orm

正則表達式

正則表達式u修飾符:
當給正則表達式添加u字符時,它就從編碼單元操做模式切換爲字符模式。

其餘新增的方法

上面提到的字符串和正則的新增方法只有在國際化的時候才用的到,我想,國內的不少網站仍是不須要考慮國際化的問題,看不懂就先丟掉。下面講到的新增的方法是實際開發中需求比較頻繁的方法。

字符串中的子串識別

之前咱們常常使用indexOf()來檢測字符串中是否包含另一段字符串。

let t = 'abcdefg'
if(t.indexOf('cde') > -1) {
  console.log(2)
}
//輸出2,由於t字符串中包含cde字符串。

在ES6中,新增了3個新方法。每一個方法都接收2個參數,須要檢測的子字符串,以及開始匹配的索引位置。

includes(str, index):若是在字符串中檢測到指定文本,返回true,不然false。

let t = 'abcdefg'
if(t.includes('cde')) {
  console.log(2)
}
//true

startsWith(str, index):若是在字符串起始部分檢測到指定文本,返回true,不然返回false。

let t = 'abcdefg'
if(t.startsWith('ab')) {
  console.log(2)
}
//true

endsWith(str, index):若是在字符串的結束部分檢測到指定文本,返回true,不然返回false。

let t = 'abcdefg'
if(t.endsWith('fg')) {
  console.log(2)
}
//true

若是你只是須要匹配字符串中是否包含某子字符串,那麼推薦使用新增的方法,若是須要找到匹配字符串的位置,使用indexOf()。

repeat(number)

這個方法挺有意思的,接收一個Number類型的數據,返回一個重複N次的新字符串。即便這個字符串是空字符,也你能返回N個空字符的新字符串。

console.log('ba'.repeat(3)) //bababa

正則表達式的其餘更新

正則表達式y修飾符、正則表達式的複製、flags屬性......

因爲這一塊知識沒用過,就不打算去研究實際用途。

模板字面量

之前,咱們用單引號或雙引號表示字符串。

let a = '123' //單引號
let b = "123" //雙引號

如今,使用模板字面量反撇號``。在實際開發中,這是常常都要用到的方法。

let c = `123` //反撇號

在字符串中使用反撇號,只須要加上轉義符。

let d = `12\`3` //字符串內插入反撇號的方式。

在多行字符串的使用價值:

模板字面量爲解決多行字符串的一系列問題提供了一個很是好的機制。

若是不使用模板字面量,實現多行字符串,你可能會使用換行符。

let a = '123\n456'
console.log(a) 
// 123
// 456

使用模板字面量,就能夠很是簡單的實現需求。

let a = `123
456
`
console.log(a)
// 123
// 456

在模板字面量插入變量的方法。

咱們再也不須要使用 +(加號)來向字符串插入變量,而是使用${params}直接插入你須要添加到字符串的位置。

let t = 'haha'
let a = `123${t}456`
console.log(a) //123haha456

這種方式也叫做字符串佔位符。佔位符支持互相嵌套模板字面量,強大吧。有了它,咱們終於能夠拋棄 + 拼接字符串的噁心作法了。

模板字面量的終極用法
tag是一個方法,方法名你能夠任意命名,這種寫法被稱做標籤模板。

function tag(literals, ...substitutions) {
    //literals是數組,第一個位置是"",第二個位置是佔位符之間的字符串,在本例中是haha
    //substitutions是字符串中的模板字面量,可能多個
    
    //函數最終返回字符串
}
let a = 4
let t = tag`${a} haha`
console.log(t) //4 haha

總結

本章講到了ES6中新增的Unicode方法,可是對於不須要作國際化處理的同窗,這個功能就不會用到,須要關注的新增的字符串匹配的3個方法,以及模板字面量的使用。這2個知識點很是很是經常使用!

=> 返回文章目錄

相關文章
相關標籤/搜索