1.coedPointAt()
var s = "??";
s.length // 2
s.charAt(0) // ''
s.charAt(1) // ''
s.charCodeAt(0) // 55362
s.charCodeAt(1) // 57271
在js中原本的方法charCodeAt中無法識(shí)別Unicode 碼點(diǎn)大于0xFFFF的字符,JavaScript 會(huì)認(rèn)為它們是兩個(gè)字符。他們的出現(xiàn)是啦彌補(bǔ)js以前的缺陷的,注意使他們,那么還有誰呢.
2.String.fromCodePoint
String.fromCodePoint(0x20BB7)
與String.fromCharCode方法相同,這個(gè)String.fromCharCode相同,這個(gè)就是我上邊說的他們其中的一份子.
3.at()
'abc'.at(0) // "a"
'??'.at(0) // "??
與charAt方法類似,這位大哥也是上邊的一份子;
4.字符串的循環(huán)遍歷器
var str = '123'
for(var codePoint of str){
console.log(codePoint)
// 1
// 2
// 3
}
這位大佬終于不是上邊的一份子啦,
5.includes(), startsWith(), endsWith()
let s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true
這三個(gè)方法的返回值全部是布爾值
includes() 表示是否找到了參數(shù)字符串。
startsWith() 表示參數(shù)字符串是否在原字符串的頭部。
endsWith() 表示參數(shù)字符串是否在原字符串的尾部。
6.repeat()
repeat方法返回一個(gè)新字符串,表示將原字符串重復(fù)n次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // "
如果參數(shù)==0那么返回''(空串),如果是小數(shù)則會(huì)向下取整,如果是負(fù)數(shù)||Infinity,報(bào)錯(cuò)
7.padStart(),padEnd()
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
第一個(gè)參數(shù)為指定字符串加第二個(gè)參數(shù)長(zhǎng)度的和,第二個(gè)參數(shù)為要補(bǔ)全的字符
如果原字符串的長(zhǎng)度,等于或大于指定的最小長(zhǎng)度,則返回原字符串。
如果省略第二個(gè)參數(shù),默認(rèn)使用空格補(bǔ)全長(zhǎng)度。
如果用來補(bǔ)全的字符串與原字符串,兩者的長(zhǎng)度之和超過了指定的最小長(zhǎng)度,則會(huì)截去超出位數(shù)的補(bǔ)全字符串。
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'xxx'.padEnd(5) // 'xxx '
'xxx'.padStart(10, '0123456789') // '0123456xxx'
8.模板字符串
以前在js輸出可以換行的字符串是很費(fèi)勁的,Es6中引入啦模板字符串來解決這個(gè)問題
模板字符串中嵌入變量,需要將變量名寫在${}之中。
// 普通字符串
`In JavaScript '\n' is a line-feed.`
// 多行字符串
`In JavaScript this is
not legal.`
console.log(`string text line 1
string text line 2`);
// 字符串中嵌入變量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`