Skip to content

Instantly share code, notes, and snippets.

@hu2di
Last active December 30, 2023 18:17
Star You must be signed in to star 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
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;
}
@haile01
Copy link

haile01 commented Mar 23, 2021

Truly appreciate your work <3

@QuocDat269
Copy link

thanks

@gnoluv9x
Copy link

gnoluv9x commented Aug 6, 2021

thanks alot

@dev-panpic
Copy link

Great. Thank you so much

@phananhtrung
Copy link

có vẻ đã hoàn thiện. cảm ơn bạn

@longnguyen28297
Copy link

Cảm ơn bạn

@PainterHalver
Copy link

Cảm ơn bạn nhiều

@minhquyn1204
Copy link

cảm ơn tiền bối

@lenhannhan123
Copy link

cảm ơn bạn

@Mrcryptonguyen
Copy link

gid:m9Jk3xmt8AiYwJAKhi5k89

@gnoluv9x
Copy link

gnoluv9x commented Mar 6, 2023

Tks for share :)

@quocthinhle
Copy link

Ok nice

@sylitas
Copy link

sylitas commented Jun 4, 2023

ngonnnnn thanks anh em

@17021110
Copy link

thanks

@hanti1999
Copy link

hanti1999 commented Jul 6, 2023

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

@vuduynhiennn
Copy link

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

@cunghayday
Copy link

cunghayday commented Oct 3, 2023

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