Bỏ dấu bằng cách replace các ký tự có dấu về ký tự không dấu tương ứng:
- 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:
- 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;
- }
Test:
- string test1 = "hành trang lập trình chấm cơm".NonUnicode();
- string test2 = Functions.RemoveUnicode("hành trang lập trình chấm cơm");
Thank you very much
Trả lờiXóahay lắm, thanks
Trả lờiXóaBạn có thể sử dụng Regex để viết ngắn gọn hơn.
Trả lờiXóastatic 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();
}
https://laptrinhvb.net