Вопрос

Я создал функцию, которая преобразует любую строку в разделитель табуляции.

What's new in ASP.NET 4.0

Затем он преобразует вышеприведенный заголовок в следующий:

what-s-new-in-asp-net-4-0

Я использую это для оптимизации моего URL-адреса.Но я не уверен, что это будет работать нормально во всех случаях или нет.До сих пор я тестировал эту функцию примерно на 1000 записях в моей базе данных, и она отлично работает для всех названий.Ребята, пожалуйста, проверьте эту функцию и дайте мне знать, есть ли вероятность сбоя этой функции, и если есть вероятность, что эта функция может выйти из строя, то, пожалуйста, подскажите мне правильную функцию, которую я могу использовать в своем приложении.

public string SEO_makeTitle(object objTitle)
    {
        string strTitle = Convert.ToString(objTitle);

        strTitle = Regex.Replace(strTitle.Trim(), @"\W", " "); //replace special chars
        strTitle = Regex.Replace(strTitle.Trim(), @"\s{2,}", " "); //replace double space
        strTitle = strTitle.Trim().Replace(" ", "-").ToLower();

        return strTitle; //return - delimited title
    }

Спасибо

Это было полезно?

Решение

Возможно, вы захотите подумать о том, как будут выглядеть акценты.Вы заменяете "специальные" символы, но я сомневаюсь, что это включает в себя буквы, отличные от ASCII.

Сначала я бы попытался преобразовать символы с ударением в символы без ударения.Есть относительно простой способ сделать это на C #, если вы знаете, в чем хитрость:

 static string RemoveAccents (string input) 
 { 
     string normalized = input.Normalize(NormalizationForm.FormKD); 
     Encoding removal = Encoding.GetEncoding 
         (Encoding.ASCII.CodePage, 
          new EncoderReplacementFallback(""), 
          new DecoderReplacementFallback("")); 
     byte[] bytes = removal.GetBytes(normalized); 
     return Encoding.ASCII.GetString(bytes); 
 }

Возможно, вы также захотите явно использовать ToLower(CultureInfo.InvariantCulture) чтобы избежать проблем, если вы запустите код в Турции.Вероятно, это не было бы проблемой, если бы вы запустили ToLower до того, как Выполняется RemoveAccents по общему признанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top