在擴(kuò)展的字符串中有幾個方法是es7的一個提案纷宇,如果不處理兼容性會導(dǎo)致編譯無法通過,處理兼容性的方法:安裝一個處理兼容性的庫? npm? install? babel-polyfill? --save-dev
{
? ? ?console.log( 'a', '\uBB61' );//? ?
? ? ?console.log('S','\uBB617');//? ?7? \uBB617大于兩個字節(jié)的字符,將前四個當(dāng)做一個字符占遥,第5個之后的當(dāng)做其他字符
? ? ?console.log('S','\u{20BB7}');//??
}
//處理大于兩個字節(jié)的字符
{
? ? ?//es5 處理? charAt和charCodeAt對處理大于兩個字節(jié)的字符不準(zhǔn)確
? ? ?let ?s ?= '??';
? ? ?console.log('length', ?s.length); ? //? 2
? ? ?console.log('char-0', ?s.charAt(0)); ?//? 亂碼
? ? ?console.log('char-1', ? s.charAt(1)); ? ?//? ? 亂碼
? ? ?console.log('atchar-0', ? s.charCodeAt(0)); ? //? 55362
? ? ?console.log('atchar-1', ?s.charCodeAt(1)); ? ?//? 57271
? ? ?//es6 處理? codePointAt可準(zhǔn)確的處理任何字符
? ? ?let ? s1 ?= ?'??a';
? ? ?console.log('length', ?s1.length); ? //? ? 3
? ? ?console.log('code0', ?s1.codePointAt(0)); ? //? ? 134071
? ? ?console.log('code0 tostring', ?s1.codePointAt(0).toString(16)); ? //? 20bb7
? ? ?console.log('code1', ?s1.codePointAt(1)); ? //? ? 57271? codePointAt(1):只取后兩個字節(jié)
? ? ?console.log('code2', ?s1.codePointAt(2)); ? // 97? -- a
}
{
? ? ?//es5 方法? fromCharCode 處理大于兩個字節(jié)的字符 為亂碼
? ? console.log(String.fromCharCode("0x20bb7")); ? // ??
? ? //es6 方法? fromCodePoint 處理大于兩個字節(jié)的字符 準(zhǔn)確
? ? console.log(String.fromCodePoint("0x20bb7")); ?// ??
}
{
? ? ?let ?str ?= ?'\u{20bb7}abc';
? ? //es5? 處理
? ? for( ?let i = 0; i < str.length; ?i++){
? ? ? ? ?console.log('es5',str[i]);//? ?? a? b? c
? ? ?}
? ? //es5? 處理
? ? for( ?let ?code ?of ?str ){
? ? ? ? console.log('es6', code); ?//??a? b? c
? ?}
}
//字符串的包含阶女,起始,結(jié)束
{
? ? ?let ?str ?= ?"string";
? ? ?console.log('includes', ?str.includes('c')); ? //false
? ? ?console.log('startsWith', ? ?str.startsWith('str')); ? //true
? ? ?console.log('endsWith', ? ?str.endsWith('g')); ? //true
}
//字符串重復(fù)顯示
{
? ? ? let ?str ?= ?"abc";
? ? ?console.log(str.repeat(2)); ? //? abcabc
}
//使用 `${}`進(jìn)行簡單數(shù)據(jù)拼接
{
? ? ?let ? name ?= ?"line";
? ? let ? info ?= ?"hello world";
? ? let? n? =? `i am? ${name},${info}`;? // i am line,hello world
? ?console.log(n);
}
//字符串?dāng)?shù)字補(bǔ)零
{
? ? ?console.log('1'.padStart(2,'0'));// 01
? ? ?console.log('12'.padStart(2,'0'));// 12
? ? ?console.log('1'.padEnd(2,'0'));// 10
? ? ?console.log('12'.padEnd(2,'0'));// 12
}
//標(biāo)簽?zāi)0?/p>
{
? ? ? let ?user ?= ?{?
? ? ? ? ? ? ? ? ? ?name:"list",
? ? ? ? ? ? ? ? ? info:"hello world"
? ? };
? ? abc`i am${user.name} ${user.info}`;
? ? console.log('aaa',abc`i am${user.name},${user.info}`);
? ? //s :標(biāo)簽?zāi)0? v1:第一個參數(shù) user.name? v2:第二個參數(shù) user.info
? ? function ? abc(s,v1,v2){
? ? ? ? ? ?console.log("abc", s,v1,v2); ? // s: ["i am ", " ", ""]? v1:list? v2: hello world
? ? ? ? ? ?return ?s+v1+v2;
? ?}
}
// String.raw? ? 對\進(jìn)行轉(zhuǎn)義
{
? ? ? console.log(String.raw`Hi\n${1+2}`); ? // \n換行符沒有生效
? ? ? console.log(`Hi\n${1+2}`); ? //? \n換行符生效
}