11/08/2018, 20:36
Bỏ dấu tiếng Việt trong Typescript
Bỏ dấu tiếng Việt trong Typescript Vấn đề này không hề mới lạ và có vô số mã nguồn làm việc này rồi: Một số kĩ thuật xử lí tiếng Việt trong Javascript. Diacritics.js Nhưng chúng chỉ chạy tốt trên desktop với bảng mã Unicode chuẩn. Một số điện thoại Android sử dụng bộ gõ với Combining ...
Bỏ dấu tiếng Việt trong Typescript
Vấn đề này không hề mới lạ và có vô số mã nguồn làm việc này rồi:
- Một số kĩ thuật xử lí tiếng Việt trong Javascript.
- Diacritics.js
Nhưng chúng chỉ chạy tốt trên desktop với bảng mã Unicode chuẩn. Một số điện thoại Android sử dụng bộ gõ với Combining Diacritical Marks thì không còn chính xác nữa. Ví dụ:
à = a + u0300 á = a + u0301 ã = a + u0309 ả = a + u0303 ạ = a + u0323
Mã nguồn
const cleanAccents = (str: string): string => { str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a"); str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e"); str = str.replace(/ì|í|ị|ỉ|ĩ/g, "i"); str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o"); str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u"); str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y"); str = str.replace(/đ/g, "d"); str = str.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, "A"); str = str.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, "E"); str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I"); str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O"); str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U"); str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y"); str = str.replace(/Đ/g, "D"); // Combining Diacritical Marks str = str.replace(/u0300|u0301|u0303|u0309|u0323/g, ""); // huyền, sắc, hỏi, ngã, nặng str = str.replace(/u02C6|u0306|u031B/g, ""); // mũ â (ê), mũ ă, mũ ơ (ư) return str; }
Viết hoa chữ cái đầu
const toTitleCase = (str: string): string => { return str.replace( /wS*/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); } ); };
Ngoài ra, có thể sử dụng hàm toLocaleLowerCase và toLocaleUpperCase để chuyển ký tự hoa/thường trong tiếng Việt.