Функция создания SEO-заголовков?
Вопрос
Я создал функцию, которая преобразует любую строку в разделитель табуляции.
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
по общему признанию.