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