ES6字串擴充套件總結

2021-10-04 18:31:56 字數 4092 閱讀 3260

字元的 unicode 表示法 :"\u0061"

表示法只限於碼點在\u0000~\uffff之間的字元。超出這個範圍的字元,必須用兩個雙位元組的形式表示。

這種表示法只限於碼點在\u0000~\uffff之間的字元。超出這個範圍的字元,必須用兩個雙位元組的形式表示。

"\ud842\udfb7"

// "?"

"\u20bb7"

// " 7"

es6 對這一點做出了改進,只要將碼點放入大括號,就能正確解讀該字元。

"\u"

// "?"

"\u\u\u"

// "abc"

let hello =

123;

hell\u

// 123

'\u'

==='\ud83d\ude80'

// true

字串的遍歷器介面

字串可以被for...of迴圈遍歷。

for

(let codepoint of

'foo'

)

遍歷器最大的優點是可以識別大於0xffff的碼點

let text = string.

fromcodepoint

(0x20bb7);

for(

let i of text)

// "?"

json.stringify() 的改造

json.stringify()的問題在於,它可能返回0xd8000xdfff之間的單個碼點。

json

.stringify

('\u'

)// "\u"

遇到0xd8000xdfff之間的單個碼點,或者不存在的配對形式,它會返回轉義字串,留給應用自己決定下一步的處理。

json

.stringify

('\u'

)// ""\\ud834""

json

.stringify

('\udf06\ud834'

)// ""\\udf06\\ud834""

string.fromcodepoint()方法:

可以識別大於0xffff的字元,彌補了string.fromcharcode()方法的不足。

string.

fromcodepoint

(0x20bb7

)// "?"

string.

fromcodepoint

(0x78

,0x1f680

,0x79

)===

'x\ud83d\ude80y'

// true

如果string.fromcodepoint方法有多個引數,則它們會被合併成乙個字串返回;

fromcodepoint方法定義在string物件上,而codepointat方法定義在字串的例項物件上。

例項和物件的區別,從定義上來講:

​ 例項都是物件,而物件不全是例項。

codepointat()方法:

例項方法:normalize():

用來將字元的不同表示方法統一為同樣的形式,被稱為 unicode 正規化。

'\u01d1'

.normalize()

==='\u004f\u030c'

.normalize()

normalize方法目前不能識別三個或三個以上字元的合成。

includes():返回布林值,表示是否找到了引數字串。

startswith():返回布林值,表示引數字串是否在原字串的頭部。

endswith():返回布林值,表示引數字串是否在原字串的尾部。

注意:字串的字元位數從0開始算,查詢的時候空格在中間也占用乙個字元位置。

只有乙個值的時候就寫要查詢的值;

這幾個方法裡面第乙個值是要查詢的值,第二個值為開始查詢的位置;

let s =

'hello world!';s.

startswith

('hello'

)// true

s.endswith

('!'

)// true

s.startswith

('world',6

)// true

s.endswith

('hello',5

)// true

s.includes

('hello',6

)// false

例項方法:repeat(要重複字串,重複的次數) :

返回乙個新字串,表示將原字串重複n次。

'hello'

.repeat(2

)// "hellohello"

'na'

.repeat(0

)// ""

引數如果是正小數,會向下取整。

如果引數是 0 到-

1 之間的小數,則等同於 0,這是因為會先進行取整運算。

'na'

.repeat

(2.9

)// "nana"

'na'

.repeat(-

0.9)

// ""

如果repeat的引數是負數或者infinity,會報錯

'na'

.repeat

(infinity

)// rangeerror

'na'

.repeat(-

1)// rangeerror

例項方法:padstart(),padend():

padstart()的常見用途是為數值補全指定位數:

'1'

.padstart(10

,'0'

)// "0000000001"

'x'

.padstart(5

,'ab'

)// 'ababx'

'x'.

padstart(4

,'ab'

)// 'abax'

'x'.

padend(5

,'ab'

)// 'xabab'

'x'.

padend(4

,'ab'

)// 'xaba'

第乙個引數是字串補全生效的最大長度,最大長度是從1開始算的,第二個引數是用來補全的字串。

如果用來補全的字串與原字串,兩者的長度之和超過了最大長度,則會截去超出位數的補全字串。

'abc'

.padstart(10

,'0123456789'

)// '0123456abc'

如果省略第二個引數,預設使用空格補全長度。

'x'

.padstart(4

)// ' x'

例項方法:trimstart(),trimend() :

trimstart()消除字串頭部的空格,trimend()消除尾部的空格。

const s =

' abc ';s.

trim()

// "abc"

s.trimstart()

// "abc "

s.trimend()

// " abc"

ES6 字串擴充套件

1 字串可以使用 u x的形式來表達乙個字元,x叫做字元的碼點,x的範圍是0000 ffff,超過ffff的碼點需要用兩個雙位元組表示 如果我們 u後面的16進製制的值大於ffff,我們需要加乙個大括號 u讓js正確解析。2 我們應該都了解,漢字一般都需要兩個雙位元組來表示,在js中兩個位元組佔乙個...

ES6 字串擴充套件 repeat

repeat 方法返回乙個新字串,引數 n 表示將原來的字串重複 n 次。let a s a.repeat 0 a.repeat 2 ss a sa.repeat a a.repeat 2 ss 引數如果是小數會被取整 a.repeat 2.9 ss 引數是負數或者 infinity 會報錯 a.r...

ES6 字串的擴充套件

js中有indexof方法,來確認乙個字串是否包含在另乙個字串中。es6又提供了三中新方法 includes 返回布林值,表示是否找到了引數字串。startswith 返回布林值,表示引數字串是否在源字串的頭部。endswith 返回布林值,表示引數字串是否在源字串的尾部。let s hello w...