[C#] System.Webの参照なしで HttpUtility.ParseQueryString を使う

HttpUtility.ParseQueryString を使いたいが、 .Net Framework 4.0 Client Profile だと System.Web が使えない。 StackOverFlowなどを調べてもまともに使えそうなコードが見当たらないので自分で書いた。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static NameValueCollection ParseQueryString(string query)
{

var ret = new NameValueCollection();
foreach (string pair in query.Split('&'))
{
string[] kv = pair.Split('=');

string key = kv.Length == 1
? null : Uri.UnescapeDataString(kv[0]).Replace('+', ' ');

string[] values = Uri.UnescapeDataString(
kv.Length == 1 ? kv[0] : kv[1]).Replace('+', ' ').Split(',');

foreach (string value in values)
{
ret.Add(key, value);
}
}
return ret;
}
関連があるかもしれない記事