2008-05-09

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);

}

Technorati Tags: ,,

0 Comments:

Skicka en kommentar

Links to this post:

Skapa en länk

<< Home