2011-03-22 46 views
10

我正在尋找MonoTouch中的url轉義和unescape功能。基本上我正在尋找MonoTouch的等效方法stringByReplacingPercentEscapesUsingEncoding的,如在Objective-C代碼的後續行:MonoTouch中的網址轉義/ unescape功能

NSString *args = [(NSString*)[components objectAtIndex:3] 
        stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

我期待能夠將此轉換爲這樣的事情:

string args = URL.Unescape(components[3]); 

在MonoTouch中是否存在URL轉義/ unescape函數還是必須自己推出?

回答

19
System.Web.HttpUtility.UrlDecode (string s); 

這是MonoTouch中的System.Web.Services.dll。

+0

你試過嗎?它不會出現在我的MonoDevelop中。 – jonathanpeppers 2011-03-22 21:50:42

+0

我在MonoDevelop中的_System.Net_下看不到名稱空間_HttpUtility_。 – BruceHill 2011-03-22 21:53:38

+0

請參閱我編輯的答案。 – jonathanpeppers 2011-03-22 21:59:57

1

它不包含在MonoTouch附帶的.Net框架的版本中。

我相信我從Google Code here中得到了它的來源。

你可能想查找這個許可證,我用它的個人iPhone應用程序。

+1

謝謝,喬納森。太棒了。從代碼頂部的消息看來,這個代碼是開源的。這正是我所需要的。再次感謝。 – BruceHill 2011-03-22 22:07:22

+3

它肯定是在單點觸摸,我知道,因爲我把它放在那裏,但我忘了我們有一個在System.dll中的內部,一個是在System.Web.Services中。 – 2011-03-22 22:09:49

+0

我很高興它在那裏,我肯定今天學到了一些東西。 – jonathanpeppers 2011-03-23 17:19:20

1

除了回答, 拆分有params參數拆分('&','=');表達式首先被&分割,然後'=',所以奇數元素是所有要編碼的值,如下所示。

public static void EncodedQueryString(ref string queryString) 
    { 
     var array=queryString.Split('&','='); 
     for (int i = 0; i < array.Length; i++) { 
      string part=array[i]; 
      if(i%2==1) 
      {    
       part=System.Web.HttpUtility.UrlEncode(array[i]); 
       queryString=queryString.Replace(array[i],part); 
      } 
     } 
    } 

您應該一般只編碼這些值。