es6(基礎三) 字符串的擴展

下述超過FFFF範圍的字符是console.info(\u{20BB7});由於CSDN編輯器無法正常顯示該字符,所以全寫成吉

一、Unicode

    注意:
  1.超出FFFF範圍:吉

  2.解決超出不能正確識別的字符:{}

{
	let str = '\u00ff';
	console.info(str);//ÿ
}
{
	let str = '\uD842\uDFB7';
	console.info(str)//吉
}
{

  let str = "\u20BB7";  //₻7
  //\u20BB+"7" 超出FFFF範圍 無法正確識別字符
  console.log(str);//₻7

}
{
	let str = "\u{20BB7}";
	console.log(str);//吉
}

二、新增方法

    1.codePointAt() =>可以識別32位的UTF-16字符(正確處理 4 個字節儲存的字符,返回一個字符的碼點)

{
	var s = "吉";//2個字符 4個字節 此時用chartAt與charCodeAt都無法獲取正確值
	console.info(s.length);//2
	console.info(s.charAt(0));//�
	console.info(s.charAt(1));//�
	console.info(s.charCodeAt(0).toString(16));//d842
	console.info(s.charCodeAt(1).toString(16));//dfb7
	console.log( s.codePointAt(0).toString(16));//20bb7
	console.log( s.codePointAt(1).toString(16));//dfb7
}

{

  let str = '吉a';
  console.log(str.codePointAt(0).toString(16));//返回吉的十六進制碼點 20bb7
  console.log(str.codePointAt(1).toString(16));//與charCodeAt的第二值一樣 dfb7
  console.log(str.codePointAt(2).toString(16));//61
  for(let s of str){// 20bb7 // 61
    console.log(s.codePointAt(0).toString(16));//20bb7 61
  }
}

    場景:判斷當前字符是否大於==》0xFFFF

{
  //測試一個字符由兩個字節還是由四個字節組成
  function demo(str){
      return str.codePointAt(0) > 0xFFFF;
  }
  console.log(demo("你"));//false
  console.log(demo("吉"));//true
}

    2.at() ==>修正了chartAt()不能解析大於0xFFFF

/*at可以識別 Unicode 編號大於0xFFFF的字符,返回正確的字符*/
{
   console.log('abc'.at(0));//a
   console.log('吉'.at(0) );//
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章