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 模版字符串的限制(略)