Lọc dấu tiếng việt trong C# và javaScript

Endy Hoàng
Đăng bởi
Endy Hoàng
  12,019

Trong khi lập trình có khi bạn cần lọc dấu chuỗi tiếng việt (Unicode) thành chuỗi không dấu. Có nhiều lý do khác nhau ví dụ như bạn muốn lọc dấu Title để làm Url khi sử dụng rewrite URL

Trong khi lập trình có khi bạn cần lọc dấu chuỗi tiếng việt (Unicode) thành chuỗi không dấu. Có nhiều lý do khác nhau ví dụ như bạn muốn lọc dấu Title để làm Url khi sử dụng rewrite URL

VD:

Tôi có tiêu đề "Lọc dấu tiếng việt trong C# và javaScript"

Sau khi lọc dấu xong sẽ được "Loc dau tieng viet trong c# va javascript"

Tiếp theo bạn có thể thay thế các khoảng trống và ký tự đặc biết bằng ký tự "-" thì chuổi sẽ thành như sau: " Loc-dau-tieng-viet-trong-c-va-javascript"

1. Hàm lọc dấu tiếng việt trong C#.
private static readonly string[] VietNamChar = new string[] 
    { 
        "aAeEoOuUiIdDyY", 
        "áàạảãâấầậẩẫăắằặẳẵ", 
        "ÁÀẠẢÃÂẤẦẬẨẪĂẮẰẶẲẴ", 
        "éèẹẻẽêếềệểễ", 
        "ÉÈẸẺẼÊẾỀỆỂỄ", 
        "óòọỏõôốồộổỗơớờợởỡ", 
        "ÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠ", 
        "úùụủũưứừựửữ", 
        "ÚÙỤỦŨƯỨỪỰỬỮ", 
        "íìịỉĩ", 
        "ÍÌỊỈĨ", 
        "đ", 
        "Đ", 
        "ýỳỵỷỹ", 
        "ÝỲỴỶỸ" 
    };
    public static string LocDau(string str)    
    {   
        //Thay thế và lọc dấu từng char      
        for (int i = 1; i < VietNamChar.Length; i++)        
        {
            for (int j = 0; j < VietNamChar[i].Length; j++)
                str = str.Replace(VietNamChar[i][j], VietNamChar[0][i - 1]);        
        }        
        return str;    
    }

 Ví dụ string locdau = LocDau("Chia sẻ là niềm vui") Sẽ cho kết quả là: Chia se la niem vui
 

2. Hàm lọc dấu trong Javascript
function locdau(obj) 
{
    var str;
    if (eval(obj))
        str = eval(obj).value;
    else
        str = obj;
    str = str.toLowerCase();
    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,"-");  
    /* tìm và thay thế các kí tự đặc biệt trong chuỗi sang kí tự - */
    //str= str.replace(/-+-/g,"-"); //thay thế 2- thành 1-  
    str = str.replace(/^\-+|\-+$/g, "");
    //cắt bỏ ký tự - ở đầu và cuối chuỗi 
    eval(obj).value = str.toUpperCase();
}

Sử dụng hàm này: <asp:TextBox ID="txtInput" onkeyup="locdau(this);" runat="server" /> Khi đó txtInput sẽ chỉ nhập được không dấu.

Nguồn: hmclip

Bài viết cùng mục

Những bài viết dưới đây có thể bổ ích cho nội dung bạn vừa đọc ở trên. Hãy khám phá thêm.

Mục lục
Zalo messenger request