<<深入理解ES6>>記:二

第2章 字符串和正則表達式

1.在ECMAScript6出現以前,JavaScript字符串一直基于16位字符編碼(UTF-16)進行構建.

2.新增了完全支持UTF-16的 codePointAt() 方法
這個方法接受編碼單元的位置而非字符位置作為參數, 返回與字符串中給定位置對應的碼位,即一個整數值

let text = '??';
console.log(text.codePointAt(0));    // 134071

3.和上面方法相反
使用String.fromCodePoint()方法根據指定的碼位生成一個字符

console.log(String.fromCodePoint(134071));  // '??'

4.字符串添加一個normalize()方法,它可以提供Unicode的標準化形式
方法接受一個可選參數,指明應用以下某種 Unicode 標準化形式: ('NFC', 'NFD', 'NFKC', 'NFKD')

如果開發一款國際化的應用,那么normalize()方法就有用得多了

注釋: 切記在進行排序和比較操作前,將被操作字符串按照統一標準進行標準化

5.正則表達式u修飾符

let text = '??';
console.log(text.length);            // 2
console.log(/^.$/.test(text));       // false
console.log(/^.$/u.test(text));      // true

6.字符串中的子串識別

  • includes(), 在字符串檢測, 結果true/false
  • startsWith(), 在字符串起始位置檢測, 結果 true/false
  • endsWith(), 在字符串結束位置檢測, 結果 true/false

注釋: 以上方法不能處理傳入正則, 而舊方法indexOf(), lastIndexOf()把傳入的正則表達式轉化為一個字符串并搜索它.

7.repeat(), 參數number. 表示該字符串的重復次數

console.log('x'.repeat(3));   // 'xxx';

8.正則表達式 y 修飾符

  • 它會影響正則表達式搜索過程中的 sticky 屬性, 它通知搜索從正則表達式的lastIndex屬性開始進行.
  • 檢測y修飾符是否存在
let pattern = /hello\d/y
console.log(pattern.sticky); // true

9.正則表達是我的復制

  • 在ECMAScript5中, 可以通過給RegExp構造函數傳遞正則表達式作為參數,來復制這個正則表達式
var re1 = /ab/i, re2 = new RegExp(re1);   // 可以
re3 = new RegExp(re1, 'g');  // 在ES5中拋出錯誤, 在ES6中正常運行(可以通過第二個參數修改其修飾符)

10.flags 屬性
ES6中可以通過訪問flags返回當前正則表達式的修飾符字符串

let re = /ab/g;
console.log(re.source);  // 'ab'
console.log(re.flags);  // 'ab'

11.模板字面量

  • 基本語法
let message = `hello world`;
  • 多行字符串
ES5:
 var message = "multiline \n
                     string"

ES6: 
 let message = `multiline
                     string` 
注意點: 在反撇號中的所以空白符都屬于字符串中的一部分
  • 字符串占位
let name = 'hello';
    message = `${name}, world`;
console.log(message);   // hello, world   
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容