字符串的擴(kuò)展

1. unicode

JavaScript 允許采用\uxxxx形式表示一個字符,其中xxxx表示字符的 Unicode 碼點(diǎn)。

"\u0061"

// "a"

但是,這種表示法只限于碼點(diǎn)在\u0000~\uFFFF之間的字符。超出這個范圍的字符,必須用兩個雙字節(jié)的形式表示。

"\uD842\uDFB7" // "??"

"\u20BB7" // " 7"

上面代碼表示,如果直接在\u后面跟上超過0xFFFF的數(shù)值(比如\u20BB7),JavaScript 會理解成\u20BB+7。由于\u20BB是一個不可打印字符,所以只會顯示一個空格,后面跟著一個7。

ES6 對這一點(diǎn)做出了改進(jìn),只要將碼點(diǎn)放入大括號,就能正確解讀該字符

"\u{20BB7}" // "??"

"\u{41}\u{42}\u{43}" // "ABC"

let hello = 123; hell\u{6F} // 123

'\u{1F680}' === '\uD83D\uDE80' // true

上面代碼中,最后一個例子表明,大括號表示法與四字節(jié)的 UTF-16 編碼是等價的。

有了這種表示法之后,JavaScript 共有 6 種方法可以表示一個字符。

'\z' === 'z' // true

'\172' === 'z' // true

'\x7A' === 'z' // true

'\u007A' === 'z' //true

'\u{7A}' === 'z' // true

2. codePointAt

3.String.fromCodePoint

4.字符串遍歷?

es 可以使用 for of 遍歷字符串

5.at 方法

6.normalize

7. includes() startsWith() endsWith()

傳統(tǒng)上,JavaScript 只有indexOf方法,可以用來確定一個字符串是否包含在另一個字符串中。ES6 又提供了三種新方法。

? ??includes():返回布爾值,表示是否找到了參數(shù)字符串。

? ??startsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。

? ??endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部。

這三種方法都支持第二個參數(shù),表示開始搜索的位置

8.repeat

8.1 repeat方法返回一個新字符串,表示將原字符串重復(fù)n次。

'x'.repeat(3) //

"xxx" 'hello'.repeat(2) //

"hellohello" 'na'.repeat(0) // ""

8.2 如果是小數(shù)則取整

'na'.repeat(2.9) // "nana"

8.3 如果repeat的參數(shù)是負(fù)數(shù)或者Infinity,會報錯。

8.4?如果參數(shù)是 0 到-1 之間的小數(shù),則等同于 0,這是因?yàn)闀冗M(jìn)行取整運(yùn)算。0 到-1 之間的小數(shù),取整以后等于-0,repeat視同為 0。

8.5?參數(shù)NaN等同于 0。

8.6?如果repeat的參數(shù)是字符串,則會先轉(zhuǎn)換成數(shù)字

9.padStart() padEnd()

'x'.padStart(5, 'ab') // 'ababx'

'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'

'x'.padEnd(4, 'ab') // 'xaba'

上面代碼中,padStart和padEnd一共接受兩個參數(shù),第一個參數(shù)用來指定字符串的最小長度,第二個參數(shù)是用來補(bǔ)全的字符串。

10 模版字符串

模板字符串(template string)是增強(qiáng)版的字符串,用反引號(`)標(biāo)識。它可以當(dāng)作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量。

上面代碼中,所有模板字符串的空格和換行,都是被保留的,比如

    標(biāo)簽前面會有一個換行。如果你不想要這個換行,可以使用trim方法消除它。

模板字符串中嵌入變量,需要將變量名寫在${}之中。

模板字符串之中還能調(diào)用函數(shù)。

如果大括號中的值不是字符串,將按照一般的規(guī)則轉(zhuǎn)為字符串。比如,大括號中是一個對象,將默認(rèn)調(diào)用對象的toString方法。

模板字符串甚至還能嵌套。

11模版編譯(略)

12 標(biāo)簽?zāi)0妫裕?/b>

13 String.raw()(略)

14 模版字符串的限制(略)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容