成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

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

guqiu / 1461人閱讀

摘要:本章主要講個(gè)知識(shí)點(diǎn),字符串正則表達(dá)式字符串字符串是大原始數(shù)據(jù)類(lèi)型。提供的標(biāo)準(zhǔn)形式,接受一個(gè)可選的字符串參數(shù),指明應(yīng)用某種標(biāo)準(zhǔn)形式。如果在字符串中檢測(cè)到指定文本,返回,否則。字符串內(nèi)插入反撇號(hào)的方式。

相比較于第一章變量的聲明,這一章的內(nèi)容有了一點(diǎn)深度提升,但還不至于很難理解。本章主要講2個(gè)知識(shí)點(diǎn),字符串正則表達(dá)式

字符串

字符串(String)是JavaScript6大原始數(shù)據(jù)類(lèi)型。其他幾個(gè)分別是Boolean、Null、Undefined、Number、Symbol(es6新增)。

字符串類(lèi)型在前端開(kāi)發(fā)者,是使用最頻繁的類(lèi)型之一,網(wǎng)站上可見(jiàn)的各種文案,幾乎都是字符串類(lèi)型的數(shù)據(jù)。我們經(jīng)常需要使用的操作無(wú)非是這么幾點(diǎn):讀取字符串、轉(zhuǎn)換字符串、清空字符串、拼接字符串、截取字符串。

在ES5中,字符串類(lèi)型已經(jīng)有了非常豐富的應(yīng)用能力,那么,在ES6中,ECMA的專(zhuān)家們對(duì)字符串做了什么更新呢?

當(dāng)Unicode引入擴(kuò)展字符集之后,16位的字符已經(jīng)不足以滿(mǎn)足字符串的發(fā)展,所以才在ES6中更新了Unicode的支持。

我們看看ES6字符串新增的方法

UTF-16碼位:ES6強(qiáng)制使用UTF-16字符串編碼。關(guān)于UTF-16的解釋請(qǐng)自行百度了解。

codePointAt():
該方法支持UTF-16,接受編碼單元的位置而非字符串位置作為參數(shù),返回與字符串中給定位置對(duì)應(yīng)的碼位,即一個(gè)整數(shù)值。

String.fromCodePoiont():作用與codePointAt相反,檢索字符串中某個(gè)字符的碼位,也可以根據(jù)指定的碼位生成一個(gè)字符。

normalize():提供Unicode的標(biāo)準(zhǔn)形式,接受一個(gè)可選的字符串參數(shù),指明應(yīng)用某種Unicode標(biāo)準(zhǔn)形式。

正則表達(dá)式

正則表達(dá)式u修飾符:
當(dāng)給正則表達(dá)式添加u字符時(shí),它就從編碼單元操作模式切換為字符模式。

其他新增的方法

上面提到的字符串和正則的新增方法只有在國(guó)際化的時(shí)候才用的到,我想,國(guó)內(nèi)的很多網(wǎng)站還是不需要考慮國(guó)際化的問(wèn)題,看不懂就先丟掉。下面講到的新增的方法是實(shí)際開(kāi)發(fā)中需求比較頻繁的方法。

字符串中的子串識(shí)別

以前我們經(jīng)常使用indexOf()來(lái)檢測(cè)字符串中是否包含另外一段字符串。

let t = "abcdefg"
if(t.indexOf("cde") > -1) {
  console.log(2)
}
//輸出2,因?yàn)閠字符串中包含cde字符串。

在ES6中,新增了3個(gè)新方法。每個(gè)方法都接收2個(gè)參數(shù),需要檢測(cè)的子字符串,以及開(kāi)始匹配的索引位置。

includes(str, index):如果在字符串中檢測(cè)到指定文本,返回true,否則false。

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

startsWith(str, index):如果在字符串起始部分檢測(cè)到指定文本,返回true,否則返回false。

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

endsWith(str, index):如果在字符串的結(jié)束部分檢測(cè)到指定文本,返回true,否則返回false。

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

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

repeat(number)

這個(gè)方法挺有意思的,接收一個(gè)Number類(lèi)型的數(shù)據(jù),返回一個(gè)重復(fù)N次的新字符串。即使這個(gè)字符串是空字符,也你能返回N個(gè)空字符的新字符串。

console.log("ba".repeat(3)) //bababa
正則表達(dá)式的其他更新

正則表達(dá)式y(tǒng)修飾符、正則表達(dá)式的復(fù)制、flags屬性......

由于這一塊知識(shí)沒(méi)用過(guò),就不打算去研究實(shí)際用途。

模板字面量

以前,我們用單引號(hào)或雙引號(hào)表示字符串。

let a = "123" //單引號(hào)
let b = "123" //雙引號(hào)

現(xiàn)在,使用模板字面量反撇號(hào)``。在實(shí)際開(kāi)發(fā)中,這是經(jīng)常都要用到的方法。

let c = `123` //反撇號(hào)

在字符串中使用反撇號(hào),只需要加上轉(zhuǎn)義符。

let d = `12`3` //字符串內(nèi)插入反撇號(hào)的方式。

在多行字符串的使用價(jià)值:

模板字面量為解決多行字符串的一系列問(wèn)題提供了一個(gè)非常好的機(jī)制。

如果不使用模板字面量,實(shí)現(xiàn)多行字符串,你可能會(huì)使用換行符。

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

使用模板字面量,就可以非常簡(jiǎn)單的實(shí)現(xiàn)需求。

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

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

我們不再需要使用 +(加號(hào))來(lái)向字符串插入變量,而是使用${params}直接插入你需要添加到字符串的位置。

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

這種方式也叫作字符串占位符。占位符支持互相嵌套模板字面量,強(qiáng)大吧。有了它,我們終于可以?huà)仐?+ 拼接字符串的惡心做法了。

模板字面量的終極用法
tag是一個(gè)方法,方法名你可以任意命名,這種寫(xiě)法被稱(chēng)作標(biāo)簽?zāi)0濉?/p>

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

本章講到了ES6中新增的Unicode方法,但是對(duì)于不需要做國(guó)際化處理的同學(xué),這個(gè)功能就不會(huì)用到,需要關(guān)注的新增的字符串匹配的3個(gè)方法,以及模板字面量的使用。這2個(gè)知識(shí)點(diǎn)非常非常常用!

=> 返回文章目錄

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84023.html

相關(guān)文章

  • 深入理解ES6筆記(二)符串正則表達(dá)

    摘要:主要知識(shí)點(diǎn)新增的字符串處理方法模板字面量以及正則表達(dá)式上的改動(dòng)深入理解筆記目錄字符串字符串是大原始數(shù)據(jù)類(lèi)型。如果在字符串的結(jié)束部分檢測(cè)到指定文本,返回,否則返回。字符串內(nèi)插入反撇號(hào)的方式。 主要知識(shí)點(diǎn):新增的字符串處理方法、模板字面量以及正則表達(dá)式上的改動(dòng)showImg(https://segmentfault.com/img/bVbfWak?w=861&h=622); 《深入理解E...

    TANKING 評(píng)論0 收藏0
  • 深入理解ES6筆記——導(dǎo)讀

    摘要:最近買(mǎi)了深入理解的書(shū)籍來(lái)看,為什么學(xué)習(xí)這么久還要買(mǎi)這本書(shū)呢主要是看到核心團(tuán)隊(duì)成員及的創(chuàng)造者為本書(shū)做了序,作為一個(gè)粉絲,還是挺看好這本書(shū)能給我?guī)?lái)一個(gè)新的升華,而且本書(shū)的作者也非常厲害。 使用ES6開(kāi)發(fā)已經(jīng)有1年多了,以前看的是阮一峰老師的ES6教程,也看過(guò)MDN文檔的ES6語(yǔ)法介紹。 最近買(mǎi)了《深入理解ES6》的書(shū)籍來(lái)看,為什么學(xué)習(xí)ES6這么久還要買(mǎi)這本書(shū)呢?主要是看到Daniel A...

    Godtoy 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類(lèi)型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話(huà)題。1. 安全的類(lèi)型檢測(cè)...

    yibinnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

guqiu

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<