Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class WebStringExtentions {
- public static void WriteStringUtf8(this Stream target,string value) {
- var encoded = Encoding.UTF8.GetBytes(value);
- target.Write(encoded,0,encoded.Length);
- }
- public static IDictionary<string,string> ParseQueryString(this string query) {
- // [DC]: This method does not URL decode, and cannot handle decoded input
- if(query.StartsWith("?"))
- query = query.Substring(1);
- if(query.Equals(string.Empty)) {
- return new Dictionary<string,string>();
- }
- var parts = query.Split(new[] { '&' });
- return parts.Select(
- part => part.Split(new[] { '=' })).ToDictionary(
- pair => pair[0],pair => pair[1]
- );
- }
- public static string ToQueryString(this NameValueCollection collection) {
- var sb = new StringBuilder();
- if(collection.Count > 0) {
- sb.Append("?");
- }
- var count = 0;
- foreach(var key in collection.AllKeys) {
- sb.AppendFormat("{0}={1}",key,collection[key].UrlEncode());
- count++;
- if(count >= collection.Count) {
- continue;
- }
- sb.Append("&");
- }
- return sb.ToString();
- }
- public static string PercentEncode(this string s) {
- var bytes = s.GetBytes();
- var sb = new StringBuilder();
- foreach(var b in bytes) {
- // [DC]: Support proper encoding of special characters (\n\r\t\b)
- if((b > 7 && b < 11) || b == 13) {
- sb.Append(string.Format("%0{0:X}",b));
- }
- else {
- sb.Append(string.Format("%{0:X}",b));
- }
- }
- return sb.ToString();
- }
- public static byte[] GetBytes(this string input) {
- return Encoding.UTF8.GetBytes(input);
- }
- public static Uri AsUri(this string value) {
- return new Uri(value);
- }
- public static string UrlEncode(this string value) {
- // [DC] This is more correct than HttpUtility; it escapes spaces as %20, not +
- return Uri.EscapeDataString(value);
- }
- public static string UrlDecode(this string value) {
- return Uri.UnescapeDataString(value);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment