Pergunta

Eu criei uma função que irá converter qualquer string em delimitado por tabulações.

What's new in ASP.NET 4.0

Em seguida, ele irá converter acima título a seguinte:

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

Eu estou usando isso para fazer SEO'd da minha URL. Mas não estou certo de que ele vai funcionar bem em todos os casos ou não. Até agora eu testei essa função em cerca de 1000 registros no meu banco de dados e sua multa trabalhando para todos os títulos. Guyz verifique esta função e deixe-me saber se há possibilidade de falhar esta função, e se existe a possibilidade de que esta função pode falhar, então por favor me diga a função correta que eu posso usar em meu aplicativo.

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
    }

Graças

Foi útil?

Solução

Você pode querer considerar o que acentos será semelhante. Você está substituindo os caracteres "especiais", mas duvido que isso inclui cartas não-ASCII.

Gostaria de tentar converter caracteres acentuados para os não-acentuado em primeiro lugar. Há uma maneira relativamente fácil de fazer isso em C # se você sabe o truque:

 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); 
 }

Você também pode querer usar explicitamente ToLower(CultureInfo.InvariantCulture) a problemas evitar se você executar o código na Turquia. Isso provavelmente não seria um problema se você executar o ToLower antes em execução RemoveAccents reconhecidamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top