字元的 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()
的問題在於,它可能返回0xd800
到0xdfff
之間的單個碼點。
json
.stringify
('\u'
)// "\u"
遇到0xd800
到0xdfff
之間的單個碼點,或者不存在的配對形式,它會返回轉義字串,留給應用自己決定下一步的處理。
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...