0

ですから、私の質問はかなり単純です。文字列があり、URLで使用できるようにしたいと思います。簡単ですよね?トリッキーな部分は、しかし、私はそれをエンコードするカスタムの方法が欲しいです。ほら、私の言語はé、í、ô、ä、ľ、š、č、ť...でいっぱいです。

だから、私がこのような文字列を持っているとしましょう:

Čečenský bojovník sa pobil v košickej väzbe

HttpUtility.EncodeUrlを使用すると、次の文字列が表示されます。

%c4%8ce%c4%8densk%c3%bd+bojovn%c3%adk+sa+pobil+v+ko%c5%a1ickej+v%c3%a4zbe

ただし、希望する文字列は次のようになります(できるだけユーザーフレンドリーなURLを使用しようとします)。

cecensky-bojovnik-sa-pobil-v-kosickej-vazbe

その場合、関数EncodeUrlを使用することはできません。そこで、必要なことを正確に実行して、文字列に対して複数の操作を行う関数を自分で作成しました。

public static string EncodeForUrl(this string s)
{
    string temp = s.StripDiacritics();  // one custom function
    temp = temp.ToLower();
    temp = temp.Trim();
    temp = temp.Replace(" ", "-");
    return temp;
}

何が起こっているのかは明らかで、完全にうまく機能していると思います。文字列が不変であるという事実を除いて、不必要なメモリ割り当てが非常に多く行われています。

それで、ついに私は私の質問に行き着きました-これを行うためのいくつかの推奨される、より効率的な方法はありますか?

4

2 に答える 2

0

ToLower()をスキップして、Replace()を使用する代わりに、次のようなことを行うことができます:https ://stackoverflow.com/a/5203674/730701

于 2012-05-26T08:03:50.367 に答える
0

少しグーグルした後、私はついに私のニーズを満たす答えを見つけました。Stackoverflowが状況を処理する方法はおそらく最良です。

Stack OverflowはどのようにしてSEOに適したURLを生成しますか?

これは発音区別符号を取り除くためのもので、現在のバージョンよりも優れています

https://meta.stackexchange.com/questions/7435/non-us-ascii-characters-dropped-from-full-profile-url/7696#7696

于 2012-05-26T09:19:53.670 に答える