문제

모든 문자열을 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 틀림없이.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top