34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
|
using System;
|
|||
|
using System.Linq;
|
|||
|
using System.Collections.Specialized;
|
|||
|
|
|||
|
namespace TapTap.Common.Internal.Utils {
|
|||
|
public class UrlUtils {
|
|||
|
public static NameValueCollection ParseQueryString(string query) {
|
|||
|
NameValueCollection nvc = new NameValueCollection();
|
|||
|
|
|||
|
if (query.StartsWith("?")) {
|
|||
|
query = query.Substring(1);
|
|||
|
}
|
|||
|
|
|||
|
foreach (var param in query.Split('&')) {
|
|||
|
string[] pair = param.Split('=');
|
|||
|
if (pair.Length == 2) {
|
|||
|
string key = Uri.UnescapeDataString(pair[0]);
|
|||
|
string value = Uri.UnescapeDataString(pair[1]);
|
|||
|
nvc[key] = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return nvc;
|
|||
|
}
|
|||
|
|
|||
|
public static string ToQueryString(NameValueCollection nvc) {
|
|||
|
var array = (from key in nvc.AllKeys
|
|||
|
from value in nvc.GetValues(key)
|
|||
|
select $"{Uri.EscapeDataString(key)}={Uri.EscapeDataString(value)}"
|
|||
|
).ToArray();
|
|||
|
return string.Join("&", array);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|