主要知識點:新增的字符串處理方法、模板字面量以及正則表達式上的改動
字符串(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的解釋請自行百度瞭解。spa
codePointAt():該方法支持UTF-16,接受編碼單元的位置而非字符串位置做爲參數,返回與字符串中給定位置對應的碼位,即一個整數值。code
String.fromCodePoiont():做用與codePointAt相反,檢索字符串中某個字符的碼位,也能夠根據指定的碼位生成一個字符。orm
normalize():提供Unicode的標準形式,接受一個可選的字符串參數,指明應用某種Unicode標準形式。blog
正則表達式u修飾符:當給正則表達式添加u字符時,它就從編碼單元操做模式切換爲字符模式。
正則表達的y標誌:y 標誌影響正則表達式搜索時的粘連( sticky ) 屬性,它表示從正則表達式的 lastIndex 屬性值的位置開始檢索字符串中的匹配字符。若是在該位置沒有匹配成功,那麼正則表達式將中止檢索;
複製正則表達式:使用RegExp構造器時容許使用第二個參數,而且讓它覆蓋第一個參數中的標誌;
flag屬性:ES6 新增了 flags 屬性用於配合 source 屬性,讓標誌的獲取變得更容易。
之前咱們常常使用indexOf()來檢測字符串中是否包含另一段字符串。請輸入代碼
let t = 'abcdefg' if(t.indexOf('cde') > -1) { console.log(2) } //輸出2,由於t字符串中包含cde字符串。
在ES6中,新增了3個新方法。每一個方法都接收2個參數,須要檢測的子字符串,以及開始匹配的索引位置。
includes(str, index):若是在字符串中檢測到指定文本,返回true,不然false;若是不傳第二個參數,默認爲0。
let t = 'abcdefg' if(t.includes('cde')) { console.log(2) } //true
startsWith(str, index):若是在字符串起始部分檢測到指定文本,返回true,不然返回false。若是不傳第二個參數,默認爲0。
let t = 'abcdefg' if(t.startsWith('ab')) { console.log(2) } //true
endsWith(str, index):若是在字符串的結束部分檢測到指定文本,返回true,不然返回false。默認爲字符串末尾開始查找。
若是你只是須要匹配字符串中是否包含某子字符串,那麼推薦使用新增的方法,若是須要找到匹配字符串的位置,使用indexOf()。
接收一個Number類型的數據,返回一個重複N次的新字符串。即便這個字符串是空字符,也你能返回N個空字符的新字符串。
console.log('ba'.repeat(3)) //bababa
之前,咱們用單引號或雙引號表示字符串。
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
既然替換位是 JS 表達式,那麼可替換的就不單單是簡單的變量名。你能夠輕易嵌入計算、函
數調用,等等。例如:
let count = 10, price = 0.25, message = `${count} items cost $${(count * price).toFixed(2)}.`; console.log(message); // "10 items cost $2.50."