using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace BO.Utils { public class UrlUtil { public static string GetBarCode(string barCode) { //如果是链接 //http://www.bwpsoft.com?code=WF20171108000003&name= if (barCode.Contains("?") && barCode.ToLower().Contains("http")) { barCode = barCode.Replace(ButcherAppContext.Context.UrlConfig.OutAddress + "?code=", ""); var andIndex = barCode.IndexOf("&", StringComparison.Ordinal); barCode = barCode.Substring(0, andIndex); } return barCode.Trim(); } public static string ParseCode(string url) { if (url.Contains("?")) { var arr = url.Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries); if (arr.Length > 1) { var list = arr[1].Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in list) { var l = item.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries); if (l.Length == 2 && l[0].ToUpper() == "CODE") return l[1].Trim(); } return string.Empty; } return string.Empty; } return url.Trim(); } public static string GetGoodsName(string barCode) { //如果是链接 if (barCode.Contains("name=")) { var index = barCode.IndexOf("name=", StringComparison.Ordinal); barCode = barCode.Substring(index + 5); var name = barCode.Trim(); if (name == "qpbt") { return "去皮白条"; } if (name == "dpbt") { return "带皮白条"; } return name; } return ""; } public static string GetValueByKey(string key, string queryString) { var namevalue = GetQueryString(queryString); if (namevalue.AllKeys.ToList().Contains(key)) { return namevalue[key]; } return ""; } private static NameValueCollection GetQueryString(string queryString) { return GetQueryString(queryString, Encoding.UTF8, true); } private static NameValueCollection GetQueryString(string queryString, Encoding encoding, bool isEncoded) { queryString = queryString.Replace("?", ""); NameValueCollection result = new NameValueCollection(StringComparer.OrdinalIgnoreCase); if (!String.IsNullOrEmpty(queryString)) { int count = queryString.Length; for (int i = 0; i < count; i++) { int startIndex = i; int index = -1; while (i < count) { char item = queryString[i]; if (item == '=') { if (index < 0) { index = i; } } else if (item == '&') { break; } i++; } string key = null; string value = null; if (index >= 0) { key = queryString.Substring(startIndex, index - startIndex); value = queryString.Substring(index + 1, (i - index) - 1); } else { key = queryString.Substring(startIndex, i - startIndex); } if (isEncoded) { result[(string)MyUrlDeCode(key, encoding)] = MyUrlDeCode(value, encoding); } else { result[key] = value; } if ((i == (count - 1)) && (queryString[i] == '&')) { result[key] = String.Empty; } } } return result; } public static string UrlEncoding(string str) { string encode = HttpUtility.UrlEncode(str, Encoding.UTF8); return encode; } public static string MyUrlDeCode(string str, Encoding encoding) { if (encoding == null) { Encoding utf8 = Encoding.UTF8; //首先用utf-8进行解码 string code = HttpUtility.UrlDecode(str.ToUpper(), utf8); //将已经解码的字符再次进行编码. string encode = HttpUtility.UrlEncode(code, utf8).ToUpper(); if (str == encode) encoding = Encoding.UTF8; else encoding = Encoding.GetEncoding("gb2312"); } return HttpUtility.UrlDecode(str, encoding); } } }