1.多了兩個(gè)新方法油坝;
startWith 以什么什么開頭
endWith 以什么什么結(jié)尾
eg:
? var str = "ahadjfhajfk";
? ? alert(str.startsWith("a"));//true
返回值結(jié)果為布爾值
2.字符串模板
字符串連接
a. 直接把東西塞到字符串里邊 ${東西}嫉戚;
b. 可以折行,通過(guò)${}填值
let str = 'abc';
let str = "abc";
字符串單引號(hào)與雙引號(hào)在Js中沒(méi)有什么區(qū)別澈圈,但在C語(yǔ)言彬檀,JAVA語(yǔ)言可能不一樣.
let str = `abc`;
3.反單引號(hào)``
通過(guò)${}將變量直接連接在字符串當(dāng)中;
let str = `abc`;
let n = 10;
let str1 = `a${n}bc`;
alert(str1); //a10bc
4.字符串的遍歷器接口
ES6 為字符串添加了遍歷器接口(詳見(jiàn)《Iterator》一章)瞬女,使得字符串可以被for...of循環(huán)遍歷窍帝。
for (let codePoint of 'foo') {
? console.log(codePoint)
}
// "f"
// "o"
// "o"
除了遍歷字符串,這個(gè)遍歷器最大的優(yōu)點(diǎn)是可以識(shí)別大于0xFFFF的碼點(diǎn)诽偷,傳統(tǒng)的for循環(huán)無(wú)法識(shí)別這樣的碼點(diǎn)坤学。
let text = String.fromCodePoint(0x20BB7);
for (let i = 0; i < text.length; i++) {
? console.log(text[i]);
}
// " "
// " "
for (let i of text) {
? console.log(i);
}
// "??"
上面代碼中,字符串text只有一個(gè)字符报慕,但是for循環(huán)會(huì)認(rèn)為它包含兩個(gè)字符(都不可打由罡 ),而for...of循環(huán)會(huì)正確識(shí)別出這一個(gè)字符眠冈。
5.includes(), startsWith(), endsWith()
傳統(tǒng)上飞苇,JavaScript 只有indexOf方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。ES6 又提供了三種新方法布卡。
includes():返回布爾值橱鹏,表示是否找到了參數(shù)字符串。
startsWith():返回布爾值鲁森,表示參數(shù)字符串是否在原字符串的頭部序苏。
endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部这弧。
let s = 'Hello world!';
s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true
這三個(gè)方法都支持第二個(gè)參數(shù)娃闲,表示開始搜索的位置。
let s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
上面代碼表示匾浪,使用第二個(gè)參數(shù)n時(shí)皇帮,endsWith的行為與其他兩個(gè)方法有所不同。它針對(duì)前n個(gè)字符蛋辈,而其他兩個(gè)方法針對(duì)從第n個(gè)位置直到字符串結(jié)束属拾。
6.repeat()
repeat方法返回一個(gè)新字符串,表示將原字符串重復(fù)n次冷溶。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
參數(shù)如果是小數(shù)渐白,會(huì)被取整。
'na'.repeat(2.9) // "nana"
如果repeat的參數(shù)是負(fù)數(shù)或者Infinity逞频,會(huì)報(bào)錯(cuò)纯衍。
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
但是,如果參數(shù)是 0 到-1 之間的小數(shù)苗胀,則等同于 0襟诸,這是因?yàn)闀?huì)先進(jìn)行取整運(yùn)算。0 到-1 之間的小數(shù)基协,取整以后等于-0歌亲,repeat視同為 0。
'na'.repeat(-0.9) // ""
參數(shù)NaN等同于 0澜驮。
'na'.repeat(NaN) // ""
如果repeat的參數(shù)是字符串陷揪,則會(huì)先轉(zhuǎn)換成數(shù)字。
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
7.padStart()杂穷,padEnd()
ES2017 引入了字符串補(bǔ)全長(zhǎng)度的功能鹅龄。如果某個(gè)字符串不夠指定長(zhǎng)度,會(huì)在頭部或尾部補(bǔ)全亭畜。padStart()用于頭部補(bǔ)全扮休,padEnd()用于尾部補(bǔ)全。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
上面代碼中拴鸵,padStart()和padEnd()一共接受兩個(gè)參數(shù)玷坠,第一個(gè)參數(shù)是字符串補(bǔ)全生效的最大長(zhǎng)度蜗搔,第二個(gè)參數(shù)是用來(lái)補(bǔ)全的字符串。
如果原字符串的長(zhǎng)度八堡,等于或大于最大長(zhǎng)度樟凄,則字符串補(bǔ)全不生效,返回原字符串兄渺。
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
如果用來(lái)補(bǔ)全的字符串與原字符串缝龄,兩者的長(zhǎng)度之和超過(guò)了最大長(zhǎng)度,則會(huì)截去超出位數(shù)的補(bǔ)全字符串挂谍。
'abc'.padStart(10, '0123456789')
// '0123456abc'
如果省略第二個(gè)參數(shù)叔壤,默認(rèn)使用空格補(bǔ)全長(zhǎng)度。
'x'.padStart(4) // '? x'
'x'.padEnd(4) // 'x? '
padStart()的常見(jiàn)用途是為數(shù)值補(bǔ)全指定位數(shù)口叙。下面代碼生成 10 位的數(shù)值字符串炼绘。
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
另一個(gè)用途是提示字符串格式。
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"