2012-05-26 78 views
0

所以,我的問題很簡單。我有一個字符串,我希望能夠在網址中使用它。很簡單,對吧?但棘手的部分是,我想要一種自定義的編碼方式。你看,我的語言充滿了é,í,ô,ä,š,č,......,你明白了。C#執行字符串自定義編碼的推薦方式

所以,讓我們說我有一個這樣的字符串:

Č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 

然而,我所希望的字符串應該是這樣的(試圖讓用戶友好的網址儘可能):

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

我認爲這很明顯發生了什麼事情,它工作得很好。那麼,除了字符串是不可變的,所以有相當多的不必要的內存分配正在進行。

因此,最後我得到了我的問題 - 是否有一些建議,更有效的方法呢?

+0

你嘗試過這個http://stackoverflow.com/questions/3769457/how-can-i -remove-accent-on-a-string –

+0

看看這裏: http://stackoverflow.com/questions/2920744/url-slugify-alrogithm-in-c – 2012-05-26 07:15:46

+0

@RayCheng,即關於刪除變音符號,我已經實現了一個函數。我真的不需要更多的功能來做到這一點,我的工作正常。我的問題是關於另一件事 - 實現我需要的字符串的編碼格式的最佳做法是什麼。感謝評論tho ... – walther

回答