Chuyển đổi chữ cái Unicode có dấu thành không dấu trong JavaScript
Hướng dẫn cách sử dụng JavaScript để chuyển đổi các chữ cái Unicode có dấu thành các chữ cái không dấu. Bao gồm mã nguồn và giải thích chi tiết từng bước.
Dưới đây là đoạn mã JavaScript để chuyển tất cả các chữ cái có dấu trong bảng chữ cái tiếng Việt thành các chữ cái không có dấu:
function removeVietnameseAccents(str) {
return str.normalize('NFD') // Tách chữ cái và dấu
.replace(/[\u0300-\u036f]/g, '') // Loại bỏ dấu
.replace(/đ/g, 'd') // Chuyển đ thành d
.replace(/Đ/g, 'D'); // Chuyển Đ thành D
}
// Ví dụ sử dụng
const originalStr = "Chào bạn! Hôm nay trời rất đẹp. Đừng quên mang ô nhé.";
const resultStr = removeVietnameseAccents(originalStr);
console.log(resultStr); // Output: "Chao ban! Hom nay troi rat dep. Dung quen mang o nhe."
Giải thích chi tiết:
-
normalize('NFD')
:- Phương thức
normalize
tách các ký tự và dấu ra (dạngNFD
), ví dụá
sẽ được tách thànha
và dấu'
.
- Phương thức
-
replace(/[\u0300-\u036f]/g, '')
:- Biểu thức chính quy này tìm và loại bỏ tất cả các dấu thanh trong khoảng Unicode từ
\u0300
đến\u036f
, bao gồm các dấu sắc, huyền, hỏi, ngã, nặng.
- Biểu thức chính quy này tìm và loại bỏ tất cả các dấu thanh trong khoảng Unicode từ
-
replace(/đ/g, 'd')
:- Chuyển đổi ký tự
đ
thànhd
.
- Chuyển đổi ký tự
-
replace(/Đ/g, 'D')
:- Chuyển đổi ký tự
Đ
thànhD
.
- Chuyển đổi ký tự
-
const resultStr = removeVietnameseAccents(originalStr);
:- Gọi hàm để chuyển đổi chuỗi tiếng Việt có dấu thành không dấu.
-
console.log(resultStr);
:- In chuỗi đã được chuyển đổi ra console.
Phiên bản JavaScript:
Đoạn mã trên tương thích với các phiên bản JavaScript hiện đại (ES6 trở lên). Phương thức normalize
được hỗ trợ bởi các trình duyệt hiện đại, bao gồm Chrome, Firefox, Edge, và Safari.