String.prototype.normalize()

Phương thức normalize() trả về chuỗi với các ký tự Unicode đã được bình thường hóa (nếu giá trị truyền vào không phải chuỗi, nó sẽ được chuyển thành chuỗi trước).

Cú pháp

str.normalize([form])

Tham số

form
Là một trong các giá trị "NFC", "NFD", "NFKC", hoặc "NFKD", để chỉ định định dạng Unicode của chuỗi ký tự. Nếu bỏ qua hoặc mang giá trị undefined, "NFC" sẽ được sử dụng.
  • NFC — Normalization Form Canonical Composition. (Unicode Dựng Sẵn)
  • NFD — Normalization Form Canonical Decomposition. (Unicode Tổ Hợp)
  • NFKC — Normalization Form Compatibility Composition. (Unicode Dựng Sẵn Tương Thích)
  • NFKD — Normalization Form Compatibility Decomposition. (Unicode Tổ Hợp Tương Thích)

Giá trị trả về

Một chuỗi mới với các ký tự Unicode đã được bình thường hóa.

Lỗi có thể gây ra

RangeError
Phương thức sẽ gây ra lỗi RangeError nếu như giá trị tham số form không phải là một trong các giá trị liệt kê ở trên.

Mô tả

Phương thức normalize() sẽ trả về một chuỗi mới với các ký tự Unicode đã được bình thường hóa theo một trong các định dạng Unicode Normalization Form. Nó không làm thay đổi chuỗi ban đầu.

Đối với tiếng Việt, việc bình thường hóa giữa hai định dạng Canonical hoặc Compatibility (cùng Tổ Hợp hoặc Dựng Sẵn) là như nhau.

Ví dụ

Sử dụng normalize()

// Chuỗi ban đầu

// U+1E9B: LATIN SMALL LETTER LONG S WITH DOT ABOVE
// U+0323: COMBINING DOT BELOW
var str = '\u1E9B\u0323';


// Canonically-composed form (NFC)

// U+1E9B: LATIN SMALL LETTER LONG S WITH DOT ABOVE
// U+0323: COMBINING DOT BELOW
str.normalize('NFC'); // '\u1E9B\u0323'
str.normalize();      // như trên


// Canonically-decomposed form (NFD)

// U+017F: LATIN SMALL LETTER LONG S
// U+0323: COMBINING DOT BELOW
// U+0307: COMBINING DOT ABOVE
str.normalize('NFD'); // '\u017F\u0323\u0307'


// Compatibly-composed (NFKC)

// U+1E69: LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
str.normalize('NFKC'); // '\u1E69'


// Compatibly-decomposed (NFKD)

// U+0073: LATIN SMALL LETTER S
// U+0323: COMBINING DOT BELOW
// U+0307: COMBINING DOT ABOVE
str.normalize('NFKD'); // '\u0073\u0323\u0307'

// So sánh chuỗi tiếng Việt:

// Unicode Dựng Sẵn
var tvds = 'Tiếng Việt';
// Unicode Tổ Hợp
var tvth = 'Tiếng Việt';

console.log(tvds.length); // 10
console.log(tvth.length); // 14
console.log(tvds == tvth); // false
console.log(tvds.normalize('NFC') == tvth.normalize('NFC')); // true

Đặc tả

Đặc tả Trạng thái Ghi chú
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.normalize' in that specification.
Standard Định nghĩa lần đầu.
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.prototype.normalize' in that specification.
Draft  

Trình duyệt hỗ trợ

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
normalizeChrome Full support 34Edge Full support 12Firefox Full support 31IE No support NoOpera Full support YesSafari Full support 10WebView Android No support NoChrome Android Full support 34Firefox Android Full support 31Opera Android Full support YesSafari iOS Full support 10Samsung Internet Android Full support 2.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Xem thêm