2009-05-01 9 views
1

私は任意の文字列をタブ区切りに変換する関数を作成しました。SEOタイトル制作機能?

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

私は私のURLのSEO'dを作るために、これを使用しています:

What's new in ASP.NET 4.0 

それからそれは次のようにタイトルの上に変換されます。しかし、私はそれがすべてのケースでうまくいくかどうかは分かりません。今まで私はデータベース内の約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 
    } 

おかげ

答えて

7

あなたはどのように見えるかのアクセントを検討する必要があります。あなたは "特殊"文字を置き換えていますが、ASCII以外の文字も含まれているのではないかと疑います。

アクセント付きの文字をアクセントのないものに変換しようとします。また、あなたはトルコのコードを実行した場合、明示的に問題を回避するために、ToLower(CultureInfo.InvariantCulture)を使用する場合があります

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

:あなたがトリックを知っていればC#でこれを行うには、比較的簡単な方法があります。これはおそらくを実行しての前にRemoveAccentsが実行されている場合は問題にはならないでしょう。

+0

私は、異なる言語の特殊文字の場合に失敗する可能性があります。ヒンディー語、アラビア語など..... 英語のURL(ASCII)だけを使用すると、ma関数がうまく動作すると思います。 – Prashant

+0

英語で使用されている単語でもアクセントがついていることがあります。 (Caféなど)。ああ、2つのエントリが同じURLにマップされる可能性を考慮する必要があるかもしれません。間違いなくURLには一意の識別子も含まれています(SOのように)。 –

+0

これは、アクセントを考慮する必要があることを意味します。ええ、私はURLのようにしている、http://example.com/company/810345/company-name-in-california – Prashant

関連する問題