문제
모든 문자열을 Delimited로 변환하는 함수를 만들었습니다.
What's new in ASP.NET 4.0
그런 다음 위의 제목을 다음으로 변환합니다.
what-s-new-in-asp-net-4-0
나는 이것을 사용하여 내 URL의 seo'd를 만들고 있습니다. 그러나 나는 그것이 모든 경우에 잘 작동 할 것이라고 확신하지 않습니다. 지금까지 데이터베이스의 약 1000 개의 레코드 에서이 기능을 테스트했으며 모든 타이틀에서 잘 작동합니다. Guyz이 기능을 확인 하고이 기능에 실패 할 가능성이 있는지 알려 주시고이 기능이 실패 할 가능성이 있으면 앱에서 사용할 수있는 올바른 기능을 알려주십시오.
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
틀림없이.
제휴하지 않습니다 StackOverflow