• 帮助类中


         /// <summary>
     495         /// 生成随机字母字符串(数字字母混和)
     496         /// </summary>
     497         /// <param name="codeCount">待生成的位数</param>
     498         public static string GetCheckCode(int codeCount)
     499         {
     500             string str = string.Empty;
     501             int rep = 0;
     502             long num2 = DateTime.Now.Ticks + rep;
     503             rep++;
     504             Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep)));
     505             for (int i = 0; i < codeCount; i++)
     506             {
     507                 char ch;
     508                 int num = random.Next();
     509                 if ((num % 2) == 0)
     510                 {
     511                     ch = (char)(0x30 + ((ushort)(num % 10)));
     512                 }
     513                 else
     514                 {
     515                     ch = (char)(0x41 + ((ushort)(num % 0x1a)));
     516                 }
     517                 str = str + ch.ToString();
     518             }
     519             return str;
     520         }
     521         /// <summary>
     522         /// 根据日期和随机码生成订单号
     523         /// </summary>
     524         /// <returns></returns>
     525         public static string GetOrderNumber()
     526         {
     527             string num = DateTime.Now.ToString("yyMMddHHmmss");//yyyyMMddHHmmssms
     528             return num + Number(2).ToString();
     529         }
     530         private static int Next(int numSeeds, int length)
     531         {
     532             byte[] buffer = new byte[length];
     533             System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider();
     534             Gen.GetBytes(buffer);
     535             uint randomResult = 0x0;//这里用uint作为生成的随机数  
     536             for (int i = 0; i < length; i++)
     537             {
     538                 randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8));
     539             }
     540             return (int)(randomResult % numSeeds);
     541         }
     542         #endregion
     543 
     544         #region 截取字符长度
     545         /// <summary>
     546         /// 截取字符长度
     547         /// </summary>
     548         /// <param name="inputString">字符</param>
     549         /// <param name="len">长度</param>
     550         /// <returns></returns>
     551         public static string CutString(string inputString, int len)
     552         {
     553             if (string.IsNullOrEmpty(inputString))
     554                 return "";
     555             inputString = DropHTML(inputString);
     556             ASCIIEncoding ascii = new ASCIIEncoding();
     557             int tempLen = 0;
     558             string tempString = "";
     559             byte[] s = ascii.GetBytes(inputString);
     560             for (int i = 0; i < s.Length; i++)
     561             {
     562                 if ((int)s[i] == 63)
     563                 {
     564                     tempLen += 2;
     565                 }
     566                 else
     567                 {
     568                     tempLen += 1;
     569                 }
     570 
     571                 try
     572                 {
     573                     tempString += inputString.Substring(i, 1);
     574                 }
     575                 catch
     576                 {
     577                     break;
     578                 }
     579 
     580                 if (tempLen > len)
     581                     break;
     582             }
     583             //如果截过则加上半个省略号 
     584             byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
     585             if (mybyte.Length > len)
     586                 tempString += "…";
     587             return tempString;
     588         }
     589         #endregion
     590 
     591         #region 对象<-->JSON 4.0使用
     592         /// <summary>
     593         /// 对象转JSON
     594         /// </summary>
     595         /// <typeparam name="T">对象实体</typeparam>
     596         /// <param name="t">内容</param>
     597         /// <returns>json包</returns>
     598         public static string ObjetcToJson<T>(T t)
     599         {
     600             try
     601             {
     602                 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
     603                 string szJson = "";
     604                 using (MemoryStream stream = new MemoryStream())
     605                 {
     606                     json.WriteObject(stream, t);
     607                     szJson = Encoding.UTF8.GetString(stream.ToArray());
     608                 }
     609                 return szJson;
     610             }
     611             catch { return ""; }
     612         }
     613 
     614         /// <summary>
     615         /// Json包转对象
     616         /// </summary>
     617         /// <typeparam name="T">对象</typeparam>
     618         /// <param name="jsonstring">json包</param>
     619         /// <returns>异常抛null</returns>
     620         public static object JsonToObject<T>(string jsonstring)
     621         {
     622             object result = null;
     623             try
     624             {
     625                 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
     626                 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstring)))
     627                 {
     628                     result = json.ReadObject(stream);
     629                 }
     630                 return result;
     631             }
     632             catch { return result; }
     633         }
     634         #endregion
     635 
     636         #region 对象<-->JSON 2.0 使用litjson插件
     637         /// <summary>
     638         /// 对象转JSON  jsonData
     639         /// </summary>
     640         /// <typeparam name="T"></typeparam>
     641         /// <param name="t"></param>
     642         /// <returns></returns>
     643         //public static string ObjetcToJsonData<T>(T t)
     644         //{
     645         //    try
     646         //    {
     647         //        JsonData json = new JsonData(t);
     648         //        return json.ToJson();
     649         //    }
     650         //    catch
     651         //    {
     652         //        return "";
     653         //    }
     654         //}
     655 
     656         ///// <summary>
     657         ///// 对象转JSON jsonMapper
     658         ///// </summary>
     659         ///// <typeparam name="T"></typeparam>
     660         ///// <param name="t"></param>
     661         ///// <returns></returns>
     662         //public static string ObjetcToJsonMapper<T>(T t)
     663         //{
     664         //    try
     665         //    {
     666         //        JsonData json = JsonMapper.ToJson(t);
     667         //        return json.ToJson();
     668         //    }
     669         //    catch
     670         //    {
     671         //        return "";
     672         //    }
     673         //}
     674 
     675         ///// <summary>
     676         ///// json转对象 jsonMapper
     677         ///// </summary>
     678         ///// <param name="jsons"></param>
     679         ///// <returns></returns>
     680         //public static object JsonToObject(string jsons)
     681         //{
     682         //    try
     683         //    {
     684         //        JsonData jsonObject = JsonMapper.ToObject(jsons);
     685         //        return jsonObject;
     686         //    }
     687         //    catch { return null; }
     688         //}
     689 
     690         #endregion
     691 
     692         #region DataTable<-->JSON
     693         /// <summary> 
     694         /// DataTable转为json 
     695         /// </summary> 
     696         /// <param name="dt">DataTable</param> 
     697         /// <returns>json数据</returns> 
     698         public static string DataTableToJson(DataTable dt)
     699         {
     700             List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
     701             foreach (DataRow dr in dt.Rows)
     702             {
     703                 Dictionary<string, object> result = new Dictionary<string, object>();
     704                 foreach (DataColumn dc in dt.Columns)
     705                 {
     706                     result.Add(dc.ColumnName, dr[dc]);
     707                 }
     708                 list.Add(result);
     709             }
     710 
     711             return SerializeToJson(list);
     712         }
     713         /// <summary>
     714         /// 序列化对象为Json字符串
     715         /// </summary>
     716         /// <param name="obj">要序列化的对象</param>
     717         /// <param name="recursionLimit">序列化对象的深度,默认为100</param>
     718         /// <returns>Json字符串</returns>
     719         public static string SerializeToJson(object obj, int recursionLimit = 100)
     720         {
     721             try
     722             {
     723                 JavaScriptSerializer serialize = new JavaScriptSerializer();
     724                 serialize.RecursionLimit = recursionLimit;
     725                 return serialize.Serialize(obj);
     726             }
     727             catch { return ""; }
     728         }
     729         /// <summary>
     730         /// json包转DataTable
     731         /// </summary>
     732         /// <param name="jsons"></param>
     733         /// <returns></returns>
     734         public static DataTable JsonToDataTable(string jsons)
     735         {
     736             DataTable dt = new DataTable();
     737             try
     738             {
     739                 JavaScriptSerializer serialize = new JavaScriptSerializer();
     740                 serialize.MaxJsonLength = Int32.MaxValue;
     741                 ArrayList list = serialize.Deserialize<ArrayList>(jsons);
     742                 if (list.Count > 0)
     743                 {
     744                     foreach (Dictionary<string, object> item in list)
     745                     {
     746                         if (item.Keys.Count == 0)//无值返回空
     747                         {
     748                             return dt;
     749                         }
     750                         if (dt.Columns.Count == 0)//初始Columns
     751                         {
     752                             foreach (string current in item.Keys)
     753                             {
     754                                 dt.Columns.Add(current, item[current].GetType());
     755                             }
     756                         }
     757                         DataRow dr = dt.NewRow();
     758                         foreach (string current in item.Keys)
     759                         {
     760                             dr[current] = item[current];
     761                         }
     762                         dt.Rows.Add(dr);
     763                     }
     764                 }
     765             }
     766             catch
     767             {
     768                 return dt;
     769             }
     770             return dt;
     771         }
     772         #endregion
     773 
     774         #region List<--->DataTable
     775         /// <summary>
     776         /// DataTable转换泛型集合
     777         /// </summary>
     778         /// <typeparam name="T"></typeparam>
     779         /// <param name="table"></param>
     780         /// <returns></returns>
     781         public static List<T> DataTableToList<T>(DataTable table)
     782         {
     783             List<T> list = new List<T>();
     784             T t = default(T);
     785             PropertyInfo[] propertypes = null;
     786             string tempName = string.Empty;
     787             foreach (DataRow row in table.Rows)
     788             {
     789                 t = Activator.CreateInstance<T>();
     790                 propertypes = t.GetType().GetProperties();
     791                 foreach (PropertyInfo pro in propertypes)
     792                 {
     793                     tempName = pro.Name;
     794                     if (table.Columns.Contains(tempName))
     795                     {
     796                         object value = row[tempName];
     797                         if (!value.ToString().Equals(""))
     798                         {
     799                             pro.SetValue(t, value, null);
     800                         }
     801                     }
     802                 }
     803                 list.Add(t);
     804             }
     805             return list.Count == 0 ? null : list;
     806         }
     807 
     808         /// <summary>
     809         /// 将集合类转换成DataTable
     810         /// </summary>
     811         /// <param name="list">集合</param>
     812         /// <returns>DataTable</returns>
     813         public static DataTable ListToDataTable(IList list)
     814         {
     815             DataTable result = new DataTable();
     816             if (list != null && list.Count > 0)
     817             {
     818                 PropertyInfo[] propertys = list[0].GetType().GetProperties();
     819                 foreach (PropertyInfo pi in propertys)
     820                 {
     821                     result.Columns.Add(pi.Name, pi.PropertyType);
     822                 }
     823                 for (int i = 0; i < list.Count; i++)
     824                 {
     825                     ArrayList tempList = new ArrayList();
     826                     foreach (PropertyInfo pi in propertys)
     827                     {
     828                         object obj = pi.GetValue(list[i], null);
     829                         tempList.Add(obj);
     830                     }
     831                     object[] array = tempList.ToArray();
     832                     result.LoadDataRow(array, true);
     833                 }
     834             }
     835             return result;
     836         }
     837          public static List<T> ConvertTo<T>(DataTable dt) where T : new()
     838         {
     839             if (dt == null) return null;
     840             if (dt.Rows.Count <= 0) return null;
     841  
     842             List<T> list = new List<T>();
     843             try
     844             {
     845                 List<string> columnsName = new List<string>();  
     846                 foreach (DataColumn dataColumn in dt.Columns)
     847                 {
     848                     columnsName.Add(dataColumn.ColumnName);//得到所有的表头
     849                 }
     850                 list = dt.AsEnumerable().ToList().ConvertAll<T>(row => GetObject<T>(row, columnsName));  //转换
     851                 return list;
     852             }
     853             catch 
     854             {
     855                 return null;
     856             }
     857         }
     858  
     859         public static T GetObject<T>(DataRow row, List<string> columnsName) where T : new()
     860         {
     861             T obj = new T();
     862             try
     863             {
     864                 string columnname = "";
     865                 string value = "";
     866                 PropertyInfo[] Properties = typeof(T).GetProperties();
     867                 foreach (PropertyInfo objProperty in Properties)  //遍历T的属性
     868                 {
     869                     columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower()); //寻找可以匹配的表头名称
     870                     if (!string.IsNullOrEmpty(columnname))
     871                     {
     872                         value = row[columnname].ToString();
     873                         if (!string.IsNullOrEmpty(value))
     874                         {
     875                             if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) //存在匹配的表头
     876                             {
     877                                 value = row[columnname].ToString().Replace("$", "").Replace(",", ""); //从dataRow中提取数据
     878                                 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null); //赋值操作
     879                             }
     880                             else
     881                             {
     882                                 value = row[columnname].ToString().Replace("%", ""); //存在匹配的表头
     883                                 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);//赋值操作
     884                             }
     885                         }
     886                     }
     887                 }
     888                 return obj;
     889             }
     890             catch
     891             {
     892                 return obj;
     893             }
     894         }
     895         /// <summary>
     896         /// 将泛型集合类转换成DataTable
     897         /// </summary>
     898         /// <typeparam name="T">集合项类型</typeparam>
     899         /// <param name="list">集合</param>
     900         /// <param name="propertyName">需要返回的列的列名</param>
     901         /// <returns>数据集(表)</returns>
     902         public static DataTable ListToDataTable<T>(IList<T> list, params string[] propertyName)
     903         {
     904             List<string> propertyNameList = new List<string>();
     905             if (propertyName != null)
     906                 propertyNameList.AddRange(propertyName);
     907             DataTable result = new DataTable();
     908             if (list != null && list.Count > 0)
     909             {
     910                 PropertyInfo[] propertys = list[0].GetType().GetProperties();
     911                 foreach (PropertyInfo pi in propertys)
     912                 {
     913                     if (propertyNameList.Count == 0)
     914                     {
     915                         result.Columns.Add(pi.Name, pi.PropertyType);
     916                     }
     917                     else
     918                     {
     919                         if (propertyNameList.Contains(pi.Name))
     920                             result.Columns.Add(pi.Name, pi.PropertyType);
     921                     }
     922                 }
     923                 for (int i = 0; i < list.Count; i++)
     924                 {
     925                     ArrayList tempList = new ArrayList();
     926                     foreach (PropertyInfo pi in propertys)
     927                     {
     928                         if (propertyNameList.Count == 0)
     929                         {
     930                             object obj = pi.GetValue(list[i], null);
     931                             tempList.Add(obj);
     932                         }
     933                         else
     934                         {
     935                             if (propertyNameList.Contains(pi.Name))
     936                             {
     937                                 object obj = pi.GetValue(list[i], null);
     938                                 tempList.Add(obj);
     939                             }
     940                         }
     941                     }
     942                     object[] array = tempList.ToArray();
     943                     result.LoadDataRow(array, true);
     944                 }
     945             }
     946             return result;
     947         }
     948 
     949         #endregion
     950 
     951         #region 清除HTML标记
     952         public static string DropHTML(string Htmlstring)
     953         {
     954             if (string.IsNullOrEmpty(Htmlstring)) return "";
     955             //删除脚本  
     956             Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
     957             //删除HTML  
     958             Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
     959             Htmlstring = Regex.Replace(Htmlstring, @"([
    ])[s]+", "", RegexOptions.IgnoreCase);
     960             Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
     961             Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
     962             Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", """, RegexOptions.IgnoreCase);
     963             Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
     964             Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
     965             Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
     966             Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
     967             Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "xa1", RegexOptions.IgnoreCase);
     968             Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "xa2", RegexOptions.IgnoreCase);
     969             Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "xa3", RegexOptions.IgnoreCase);
     970             Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "xa9", RegexOptions.IgnoreCase);
     971 
     972             Htmlstring = Regex.Replace(Htmlstring, @"&#(d+);", "", RegexOptions.IgnoreCase);
     973             Htmlstring.Replace("<", "");
     974             Htmlstring.Replace(">", "");
     975             Htmlstring.Replace("
    ", "");
     976             Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
     977             return Htmlstring;
     978         }
     979         #endregion
     980 
     981         #region 清除HTML标记且返回相应的长度
     982         public static string DropHTML(string Htmlstring, int strLen)
     983         {
     984             return CutString(DropHTML(Htmlstring), strLen);
     985         }
     986         #endregion
     987 
     988         #region TXT代码转换成HTML格式
     989         /// <summary>
     990         /// 字符串字符处理
     991         /// </summary>
     992         /// <param name="chr">等待处理的字符串</param>
     993         /// <returns>处理后的字符串</returns>
     994         /// //把TXT代码转换成HTML格式
     995         public static String ToHtml(string Input)
     996         {
     997             StringBuilder sb = new StringBuilder(Input);
     998             sb.Replace("&", "&amp;");
     999             sb.Replace("<", "&lt;");
    1000             sb.Replace(">", "&gt;");
    1001             sb.Replace("
    ", "<br />");
    1002             sb.Replace("
    ", "<br />");
    1003             sb.Replace("	", " ");
    1004             //sb.Replace(" ", "&nbsp;");
    1005             return sb.ToString();
    1006         }
    1007         #endregion
  • 相关阅读:
    探究 encode 和 decode 的使用问题(Python)
    C语言结构体在内存中的存储情况探究------内存对齐
    文件基本操作 (C语言)
    利用Xamaria构建Android应用-公交发车信息屏
    ChakraCore ,Net托管编程
    Go并发与.Net TAP
    码农视角
    让isis支持高德地图
    Fedora Server 上配置 MariaDb 集群
    .Net Sokcet 异步编程
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5808734.html
Copyright © 2020-2023  润新知