Ответ 1
System.Web.HttpUtility.UrlDecode (string s);
Что находится в System.Web.Services.dll в моноточе.
Я ищу функции удаления URL-адресов и unescape в MonoTouch. По сути, я ищу эквивалент MonoTouch метода stringByReplacingPercentEscapesUsingEncoding, как в следующей строке кода objective-c:
NSString *args = [(NSString*)[components objectAtIndex:3]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Я ожидал, что смогу перевести это на что-то вроде этого:
string args = URL.Unescape(components[3]);
Существуют ли функции escape/unescape URL-адреса в MonoTouch или мне нужно перевернуть мои собственные?
System.Web.HttpUtility.UrlDecode (string s);
Что находится в System.Web.Services.dll в моноточе.
Он отсутствует в версии .Net framework, включенной в MonoTouch.
Я считаю, что я получил источник этого кода Google здесь.
Вы можете захотеть найти лицензию для этого, я использовал его для личного приложения для iPhone.
В дополнение к ответу, Split имеет параметр params Split ('&', '='); выражение, сначала разделенное на, а затем '=', поэтому нечетные элементы - это все значения, которые должны быть закодированы ниже.
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);
}
}
}
Вы должны кодировать только значения в целом.