Last active
March 1, 2025 13:15
-
Star
(115)
You must be signed in to star a gist -
Fork
(29)
You must be signed in to fork a gist
-
-
Save hu2di/e80d99051529dbaa7252922baafd40e3 to your computer and use it in GitHub Desktop.
JavaScript: Chuyển tiếng Việt có dấu sang không dấu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function removeVietnameseTones(str) { | |
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"); | |
// Some system encode vietnamese combining accent as individual utf-8 characters | |
// Một vài bộ encode coi các dấu mũ, dấu chữ như một kí tự riêng biệt nên thêm hai dòng này | |
str = str.replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, ""); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng | |
str = str.replace(/\u02C6|\u0306|\u031B/g, ""); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư | |
// Remove extra spaces | |
// Bỏ các khoảng trắng liền nhau | |
str = str.replace(/ + /g," "); | |
str = str.trim(); | |
// Remove punctuations | |
// Bỏ dấu câu, kí tự đặc biệt | |
str = str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'|\"|\&|\#|\[|\]|~|\$|_|`|-|{|}|\||\\/g," "); | |
return str; | |
} |
cảm ơn tiền bối
cảm ơn bạn
gid:m9Jk3xmt8AiYwJAKhi5k89
Tks for share :)
Ok nice
ngonnnnn thanks anh em
thanks
Cảm ơn bạn, mình cần thêm dấu gạch nối nữa nên đã tìm được cái này:
/*
str = str.replace(/\W+/g, ' ');
str = str.replace(/\s/g, '-');
*/
Thêm 2 cái này ở cuối để chuyển khoảng trắng thành dấu gạch nối
ví dụ: Viet Nam => Viet-Nam
cảm ơn bạn nhiều nha trông không tối ưu lắm nhưng lúc chạy thấy ra kết quả ok
Xin cảm ơn bạn, đúng thứ tôi dang cần. Nhưng tôi thấy bạn nên để phần xoá nhiều khoảng trắng sau phần xoá ký tự đặc biệt, bởi vì sau khi xoá ký tự đặc biệt đôi khi lại xuất hiện trường hợp 2 khoảng trắng liền kề. Xoá ký tự đặc biệt theo tôi nên dùng str = str.replace(/[^a-zA-Z0-9 ]/g, ""); thì đỡ phức tạp hơn.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cảm ơn bạn nhiều