Webb-säkra svenska filnamn
Ibland behöver man skapa webb-säkra namn från vanlig text, för använding i URLer, på samma sätt som bloggmotorer gör. Här är en försvenskad metod som är snäll mot svenska/konstiga tecken:
static string UrlNameFromTitle(string title, int maxlength)
{
Regex nonstd = new Regex(@"[^a-zA-Z0-9\s]");
Regex whites = new Regex(@"\s+");
Regex dashes = new Regex(@"^[-]|[-]+$");
string s = RemoveDiacritics(title);
s = nonstd.Replace(s, "");
s = whites.Replace(s, "-");
if (s.Length > maxlength)
{
s = s.Substring(0, maxlength);
}
s = dashes.Replace(s, "");
return s.ToLower();
}
Jag använder ett unicode-trick för att plocka bort prickar och ringar från svenska tecken, eller rättare sagt transformera alla accentuerade tecken till sin basform. Koden kommer från Michael Kaplan:
static string RemoveDiacritics(string s)
{
string d = s.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < d.Length; i++)
{
UnicodeCategory uc =
CharUnicodeInfo.GetUnicodeCategory(d[i]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(d[i]);
}
}
return sb.ToString().Normalize(NormalizationForm.FormC);
}
0 Comments:
Skicka en kommentar
Links to this post:
Skapa en länk
<< Home