02/10/2018, 11:31

[C#] Chia sẽ hàm bỏ dấu tiếng việt trong lập trình Csharp

Bài viết hôm nay, mình sẽ giới thiệu cho các bạn cách xóa bỏ dấu tiếng việt trong lập trình C#. - Thực ra, để các bạn viết hàm này cũng rất đơn giản, chỉnh cần dùng hàm thay thế là ok: Ví dụ: ă, â, á, ã, ả, ạ => a... Demo ứng ...

Bài viết hôm nay, mình sẽ giới thiệu cho các bạn cách xóa bỏ dấu tiếng việt trong lập trình C#.

- Thực ra, để các bạn viết hàm này cũng rất đơn giản, chỉnh cần dùng hàm thay thế là ok: 

Ví dụ: ă, â, á, ã, ả, ạ => a...

Demo ứng dụng:

xóa bỏ dấu tiếng việt lập trình csharp

Cách 1: Sử dụng Regex để xóa dấu tiếng việt

static Regex ConvertToUnsign_rg = null;

        public static string ConvertToUnsign(string strInput)
        {
            if (ReferenceEquals(ConvertToUnsign_rg, null))
            {
                ConvertToUnsign_rg = new Regex("p{IsCombiningDiacriticalMarks}+");
            }
            var temp = strInput.Normalize(NormalizationForm.FormD);
            return ConvertToUnsign_rg.Replace(temp, string.Empty).Replace("đ", "d").Replace("Đ", "D").ToLower();
        }

Cách 2: Bỏ dấu tiếng việt dùng hàm Replace

Hàm bỏ dấu tiếng việt:

public static string RemoveUnicode(string text)  
{  
    string[] arr1 = new string[] { "á", "à", "ả", "ã", "ạ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ",  
    "đ",  
    "é","è","ẻ","ẽ","ẹ","ê","ế","ề","ể","ễ","ệ",  
    "í","ì","ỉ","ĩ","ị",  
    "ó","ò","ỏ","õ","ọ","ô","ố","ồ","ổ","ỗ","ộ","ơ","ớ","ờ","ở","ỡ","ợ",  
    "ú","ù","ủ","ũ","ụ","ư","ứ","ừ","ử","ữ","ự",  
    "ý","ỳ","ỷ","ỹ","ỵ",};  
    string[] arr2 = new string[] { "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",  
    "d",  
    "e","e","e","e","e","e","e","e","e","e","e",  
    "i","i","i","i","i",  
    "o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o",  
    "u","u","u","u","u","u","u","u","u","u","u",  
    "y","y","y","y","y",};  
    for (int i = 0; i < arr1.Length; i++)  
    {  
        text = text.Replace(arr1[i], arr2[i]);  
        text = text.Replace(arr1[i].ToUpper(), arr2[i].ToUpper());  
    }  
    return text;  
}  

Viết theo kiểu Extension cho lớp String C#:

public static string NonUnicode(this string text)  
{  
    string[] arr1 = new string[] { "á", "à", "ả", "ã", "ạ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ",  
    "đ",  
    "é","è","ẻ","ẽ","ẹ","ê","ế","ề","ể","ễ","ệ",  
    "í","ì","ỉ","ĩ","ị",  
    "ó","ò","ỏ","õ","ọ","ô","ố","ồ","ổ","ỗ","ộ","ơ","ớ","ờ","ở","ỡ","ợ",  
    "ú","ù","ủ","ũ","ụ","ư","ứ","ừ","ử","ữ","ự",  
    "ý","ỳ","ỷ","ỹ","ỵ",};  
    string[] arr2 = new string[] { "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",  
    "d",  
    "e","e","e","e","e","e","e","e","e","e","e",  
    "i","i","i","i","i",  
    "o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o",  
    "u","u","u","u","u","u","u","u","u","u","u",  
    "y","y","y","y","y",};  
    for (int i = 0; i < arr1.Length; i++)  
    {  
        text = text.Replace(arr1[i], arr2[i]);  
        text = text.Replace(arr1[i].ToUpper(), arr2[i].ToUpper());  
    }  
    return text;  
}  

Cách sử dụng:

string test1 = "xin chào, các bạn đến với lập trình vb.net".NonUnicode();  
string test2 = Functions.RemoveUnicode("xin chào, các bạn đến với lập trình vb.net");  

Rất đơn giản phải không nào? Chúc các bạn thành công!

Tags:
0