字符串新增方法

ES6字符串新增方法正則表達式

一,String.fromCodePoint():識別大於0xFFFF的字符,彌補了String.fromCharCode()方法的不足。函數

做用:返回對應碼點的字符串。測試

語法:code

String.fromCodePoint(0x20BB7)
// "𠮷"
String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y'
// true,多個參數會被合併成一個字符串輸出orm

二,String.raw():該方法返回一個斜槓都被轉義(即斜槓前面再加一個斜槓)的字符串,每每用於模板字符串的處理方法。字符串

做用:1,防止執行轉義字符;2,處理模板字符串。it

語法:console

1,String.raw`Hi\\n` === "Hi\\\\n" // true,用於防止執行轉義字符模板

2,造成模板字符串並執行變量
// `foo${1 + 2}bar`
// 等同於
String.raw({ raw: ['foo', 'bar'] }, 1 + 2) // "foo3bar"變量

三,String.codePointAt():正確處理 4 個字節儲存的字符,返回一個字符的碼點。

做用:找到對應位置的字符,而且返回該字符的碼點。
codePointAt()方法是測試一個字符由兩個字節仍是由四個字節組成的最簡單方法。

語法:

let s = '𠮷a';

s.codePointAt(0) // 134071
s.codePointAt(1) // 57271

s.codePointAt(2) // 97

注意:

codePointAt可識別四個字節的字符。可是參數卻不對應字符串下標,此時若是想用字符串下標識別字符,須要使用for of,for of能夠識別四個字節的字符,而且循環變量對應字符串下標。

例如:

let ty = "𠮷a𠮷a𠮷a𠮷a𠮷a";//字符串長度爲10,可是字節長度是15

ty.codePointAt(1);//57271,讀取的是字符串中下標爲0的「𠮷」的第二個字符

ty.codePointAt(0);//134071,讀取的是字符串中下標爲0的「𠮷」的所有,由於該方法可識別四個字節的字符

1,for of

let s = '𠮷a';
for (let ch of s) {
console.log(ch.codePointAt(0).toString(16));
}
// 20bb7,是第一個字符
// 61,是第二個字符

2,forEach

let arr = [...'𠮷a']; // arr.length === 2
arr.forEach(
ch => console.log(ch.codePointAt(0).toString(16))
);
// 20bb7
// 61


四,String.normalize():爲了表示語調和重音符號。

'\u01D1'==='\u004F\u030C' //false,都是同一個字符

'\u01D1'.length // 1

'\u004F\u030C'.length // 2

1,直接提供字符

語法:'\u01D1'.normalize();

2,利用兩個字符進行組合

語法:'\u004F\u030C'.normalize();

注意:normalize()接受四個參數,NFC NFD NFKC NFKD;解析標準不一樣,返回的字符長度不一樣。

'\u004F\u030C'.normalize('NFC').length // 1
'\u004F\u030C'.normalize('NFD').length // 2

normalize方法目前不能識別三個或三個以上字符的合成。這種狀況下,仍是隻能使用正則表達式,經過 Unicode 編號區間判斷。


五,判斷字符串中是否有某個值:

語法:

String.includes():返回布爾值,表示是否找到了參數字符串。

String.startsWith():返回布爾值,表示參數字符串是否在原字符串的頭部。

String.endsWith():返回布爾值,表示參數字符串是否在原字符串的尾部。

三個函數都支持兩個參數:查找的字符,查找起始位置。

注意:endsWith(" ",n):是查找前n項,倒着查找。

六,String.repeat():方法返回一個新字符串,表示將原字符串重複n次。

語法:

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""

返回值:是一個原字符串重複n次後生成的心字符串。

注意:小數次數會被取整;負數、Infinity報錯;字符串,則會先轉換成數字;0 到-1 之間的小數,則等同於 0,這是由於會先進行取整運算;參數NaN等同於 0。

七,若是某個字符串不夠指定長度,會在頭部或尾部補全:

adStart()用於頭部補全,padEnd()用於尾部補全。

做用:補全制定長度的字符串。

返回值:返回一個補全後的新字符串,原字符串不變。

注意:

1,原字符大於等於指定長度,返回原字符串;
2,補全字符串比指定長度大,截取補全字符串進行補全;
3,補全字符串被省略,空格補全;
4,經常使用:padStart()的常見用途是爲數值補全指定位數。下面代碼生成 10 位的數值字符串。

'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
另外一個用途是提示字符串格式。

'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

八,String.trimStart(),String.trimEnd():

它們的行爲與trim()一致,trimStart()消除字符串頭部的空格,trimEnd()消除尾部的空格。它們返回的都是新字符串,不會修改原始字符串。

trimLeft()是trimStart()的別名,trimRight()是trimEnd()的別名。

九,String.matchAll():正則表達式在當前字符串的全部匹配。

相關文章
相關標籤/搜索