Tóm tắt: Khi
rewrite url, chúng ta thường thấy tiêu đề các bài viết được chuyển đổi
thành chuỗi không dấu và dùng để làm địa chỉ truy cập vào bài viết, hàm
sau được viết bằng C# và có chức năng như vậy.
public static string ConvertToUnSign(string text)
{
for (int i = 33; i < 48; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 58; i < 65; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 91; i < 97; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 123; i < 127; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
text = text.Replace(" ", "-");
Regex regex = new Regex(@"\p{IsCombiningDiacriticalMarks}+");
string strFormD = text.Normalize(System.Text.NormalizationForm.FormD);
return regex.Replace(strFormD, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D');
}
{
for (int i = 33; i < 48; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 58; i < 65; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 91; i < 97; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
for (int i = 123; i < 127; i++)
{
text = text.Replace(((char)i).ToString(), "");
}
text = text.Replace(" ", "-");
Regex regex = new Regex(@"\p{IsCombiningDiacriticalMarks}+");
string strFormD = text.Normalize(System.Text.NormalizationForm.FormD);
return regex.Replace(strFormD, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D');
}
Hàm này dựa hoàn
toàn vào mã ACSII của các ký tự đặc biệt (trừ ký tự cách trắng – space
có mã ACSII là 32), sau đó remove các ký tự đó khỏi chuỗi, đối với các
ký tự cách trắng thì replace thành dấu “-“. Tiếp theo là chuyển các ký
tự có dấu thành không dấu.
Như vậy là chúng ta đã có một hàm chuyển đổi từ chuỗi có dấu thành không dấu chạy khá ổn rồi




0 comments:
Post a Comment