2014-10-01 1 views
0

Есть ли какая-либо существующая библиотека или код для ASP.NET MVC, которые могут преобразовать некоторую строку в довольно URL-адрес, похожий на stackoverflow, с вопросами?

Имея строку:

Привет! Это некоторые странные акцентированные слова и funcky -/Персонажи (29)

на что-то вроде:

Привет-там-это-это-какой-то-странно акцентированных-слова-и-funcky -Частификаторы-29

+0

string.replace? – Mrchief

+0

Я предполагаю, что есть много вещей, которые нужно принять во внимание для простой замены. как é to e, и не имея большого количества --- из-за трансформации строк и некоторых других, я не представляю заранее. Взгляните на строку, полученную из названия этого вопроса. –

ответ

1

Ну, устранение диакритики было получено before.

public static string RemoveDiacritics(string text) 
{ 
    var normalizedString = text.Normalize(NormalizationForm.FormD); 
    var stringBuilder = new StringBuilder(); 

    foreach (var c in normalizedString) 
    { 
     var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); 
     if (unicodeCategory != UnicodeCategory.NonSpacingMark) 
     { 
      stringBuilder.Append(c); 
     } 
    } 

    return stringBuilder.ToString().Normalize(NormalizationForm.FormC); 
} 

Если вы RemoveDiacritics, то все, что вам нужно сделать, это некоторые Regex заменить, замена всех не буквенно-цифровые символы с одним дефисом.

public static string PrettyUrl(string s) 
{ 
    return Regex.Replace(RemoveDiacritics(s), "[^a-zA-Z0-9]+", "-").Trim('-'); 
} 

Fiddle