Trong nhiều ứng dụng, chúng ta cần chuyển tiếng Việt có dấu sang kiểu không dấu. Ví dụ như khi bạn tải một file đặt tên bằng tiếng Việt có dấu. Khi tải bằng trình duyệt Firefox thì tên file có thể bị thay đổi hoặc bị cắt mất , có dấu hoặc bị chuyển sang dạng ký tự khác. Bài viết này sẽ giúp bạn thực hiện việc chuyển dổi tiếng Việt có dấu sang không dấu một cách dễ dàng với ngôn ngữ C# đi kèm một ứng dụng demo cụ thể....
Ứng dụng Chuyển đổi tiếng Việt có dấu sang khơng dấu C# Trong nhiều ứng dụng, cần chuyển tiếng Việt có dấu sang kiểu khơng dấu Ví dụ bạn tải file đặt tên tiếng Việt có dấu Khi tải trình duyệt Firefox tên file bị thay đổi bị cắt phần có dấu bị chuyển sang dạng ký tự khác Bài viết giúp bạn thực việc chuyển dổi tiếng Việt có dấu sang khơng dấu cách dễ dàng với ngôn ngữ C# kèm ứng dụng demo cụ thể Sơ lược bảng chữ tiếng Việt - Trước bắt đầu lập trình, để có ý tưởng cho chương trình mình, thường tìm hiểu kỹ vấn đề trước bắt đầu viết code Trong trường hợp vậy, cần tìm hiểu sơ lược bảng chữ tiếng Việt trước muốn chuyển chúng sang khơng dấu - Khi nhìn vào bảng chữ tiếng Việt Ta hình dung cách bỏ dấu thay ký tự có dấu thành ký tự khơng dấu Ví dụ: thay â, ă, á, thành a… Ta bắt đầu viết code cho ý tưởng Cách thứ để bỏ dấu tiết Việt - Dưới hàm cài đặt cách thứ chuyển đổi ký tự có dấu thành ký tự không dấu tương ứng - Nhớ khai báo sử dụng thư viện: using System.Text.RegularExpressions; public unsafe static string converToUnsign1(string s) { string[] pattern = {"(á|à|ả|ã|ạ|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ)", "đ", "(é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ)", "(í|ì|ỉ|ĩ|ị)", "(ó|ị|ỏ|õ|ọ|ơ|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ)", "(ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự)", "(ý|ỳ|ỷ|ỹ|ỵ)"}; char[] replaceChar = { 'a', 'd', 'e', 'i', 'o', 'u','y', 'A', 'D', 'E', 'I', 'O', 'U', 'Y'}; fixed (char* ptrChar = replaceChar) { for (int i = 0; i < pattern.Length; i++) { MatchCollection matchs = Regex.Matches(s, pattern[i], RegexOptions.IgnoreCase); foreach (Match m in matchs) { char ch = char.IsLower(m.Value[0]) ? *(ptrChar + i) : *(ptrChar + i + 7); s = s.Replace(m.Value[0], ch)} } } return s; } Để chạy đoạn code Bạn phải biên dịch mã với mã khơng an tồn (unsafe code) Cách thực sau: Bạn click chuột phải vào project chọn Properties Trong mục Build chọn: Allow unsafe code - Tới giai đoạn bạn cảm thấy đoạn code tỏ dài dòng Trong C# lại hỗ trợ đắc lực Lúc lúc bạn cải tiến Cách thứ hai - Cách tỏ tối ưu cách thứ nhiều Bạn khơng cần phải tìm hiểu q nhiều bảng chữ tiếng Việt - Hàm mô tả cách thứ hai sau: // Way public string convertToUnSign2(string s) { string stFormD = s.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); for (int ich = 0; ich < stFormD.Length; ich++) { System.Globalization.UnicodeCategory uc = System.Globalization.CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]); if (uc != System.Globalization.UnicodeCategory.NonSpacingMark) { sb.Append(stFormD[ich]); } } sb = sb.Replace('Đ', 'D'); sb = sb.Replace('đ', 'd'); return (sb.ToString().Normalize(NormalizationForm.FormD)); } Cách thứ ba - Cách tương tự cách thứ Nhưng cách viết ngắn gọn Chúng ta sử dụng cách // Way public static string convertToUnSign3(string s) { Regex regex = new Regex("\\p{IsCombiningDiacriticalMarks}+"); string temp = s.Normalize(NormalizationForm.FormD); return regex.Replace(temp, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D'); } Chương trình Demo chuyển tiếng Việt có dấu sang khơng dấu với C# - Chương trình demo viết Visual Studio 2010 (C#) Có giao diện sau: - Chương trình có demo cách trình bày Do chương trình xử lý kiện textchanged textbox nên cần bạn thay đổi nội dung ô textbox textbox tự động chuyển đổi ... 'd').Replace('u0110', 'D'); } Chương trình Demo chuyển tiếng Việt có dấu sang khơng dấu với C# - Chương trình demo viết Visual Studio 2010 (C#) Có giao diện sau: - Chương trình có demo cách trình bày Do chương... nhìn vào bảng chữ tiếng Việt Ta hình dung cách bỏ dấu thay ký tự có dấu thành ký tự khơng dấu Ví dụ: thay â, ă, á, thành a… Ta bắt đầu viết code cho ý tưởng Cách thứ để bỏ dấu tiết Việt - Dưới hàm... tưởng Cách thứ để bỏ dấu tiết Việt - Dưới hàm cài đặt cách thứ chuyển đổi ký tự có dấu thành ký tự khơng dấu tương ứng - Nhớ khai báo sử dụng thư viện: using System.Text.RegularExpressions; public