Domanda

Ho creato una funzione che converte qualsiasi stringa in delimitata da tabulazioni.

What's new in ASP.NET 4.0

Quindi convertirà il titolo sopra in:

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

Lo sto usando per rendere SEO del mio URL. Ma non sono sicuro che funzionerà bene in tutti i casi o meno. Fino ad ora ho testato questa funzione su circa 1000 record nel mio database e funziona benissimo per tutti i titoli. Guyz, controlla questa funzione e fammi sapere se c'è la possibilità di fallire questa funzione, e se c'è la possibilità che questa funzione possa fallire, allora per favore dimmi la funzione corretta che posso usare nella mia app.

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
    }

Grazie

È stato utile?

Soluzione

Potresti prendere in considerazione l'aspetto degli accenti. Stai sostituendo " special " caratteri, ma dubito che ciò includa lettere non ASCII.

Proverei prima a convertire i caratteri accentati in caratteri non accentati. C'è un modo relativamente semplice per farlo in C # se conosci il trucco:

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

Puoi anche usare esplicitamente ToLower (CultureInfo.InvariantCulture) per evitare problemi se esegui il codice in Turchia. Questo probabilmente non sarebbe un problema se si esegue ToLower prima di eseguire RemoveAccents , ammesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top