2009-05-01 15 views
1

Ich habe eine Funktion erstellt, die eine beliebige Zeichenfolge in Tabulator-getrennt konvertiert.SEO Title Making-Funktion?

What's new in ASP.NET 4.0 

Dann wird es über das Eigentum an folgenden konvertieren:

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

ich dies mit meiner URL SEO'd zu machen. Aber ich bin mir nicht sicher, ob es in allen Fällen gut funktioniert oder nicht. Bis jetzt habe ich diese Funktion auf ungefähr 1000 Aufzeichnungen in meiner Datenbank geprüft und sie funktioniert gut für alle Titel. Guyz bitte überprüfen Sie diese Funktion und lassen Sie mich wissen, wenn es möglich ist, diese Funktion zu versagen, und wenn es eine Möglichkeit gibt, dass diese Funktion fehlschlagen kann, dann sagen Sie mir bitte die richtige Funktion, die ich in meiner App verwenden kann.

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 
    } 

Dank

Antwort

7

Sie vielleicht prüfen wollen, welche Akzente aussehen wird. Sie ersetzen "spezielle" Zeichen, aber ich bezweifle, dass das Nicht-ASCII-Zeichen enthält.

Ich würde zuerst versuchen, akzentuierte Zeichen in nicht akzentuierte zu konvertieren. Es gibt eine relativ einfache Möglichkeit, dies in C# zu tun, wenn Sie den Trick kennen:

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

Sie auch explizit ToLower(CultureInfo.InvariantCulture) wollen könnten, um Probleme zu vermeiden, wenn Sie den Code in der Türkei laufen. Dies wäre wahrscheinlich kein Problem, wenn Sie den ToLower vor ausgeführt RemoveAccents ausführen.

+0

Ya, ich vermute, dass es im Fall von speziellen Zeichen für verschiedene Sprachen fehlschlagen kann. wie chines, hindi, arabisch etc ..... Aber wenn ich nur englische URLs (ASCII) verwende, dann denke ich, dass ma Funktion gut funktioniert ... – Prashant

+0

Sogar die Wörter, die auf Englisch benutzt werden, haben manchmal Akzente auf. (Café zum Beispiel.) Oh, und Sie sollten vielleicht die Möglichkeit in Erwägung ziehen, dass zwei Einträge auf dieselbe URL abgebildet werden - enthalten Sie definitiv auch eine Art eindeutigen Bezeichner in der URL (wie SO). –

+0

Das bedeutet, dass ich Akzente berücksichtigen muss, Ok. Ya ich mache URLs wie SO, http://example.com/company/810345/company-name-in-california – Prashant