最新的Functions 类

来源:互联网 发布:win10 读取mac硬盘 编辑:程序博客网 时间:2024/05/19 02:05
 
using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO;namespace BaseFunction{       public sealed class Functions    {        static Int32 index;        #region 前面补零        /// <summary>        /// 不住位数的数字,前面补零        /// </summary>        /// <param name="value">要补足的数字</param>        /// <param name="size">不齐的位数</param>        /// <returns></returns>        public static string Zerofill(string value, int size)        {            string tmp = "";            for (int i = 0; i < size - value.Length; i++)            {                tmp += "0";            }            return tmp + value;        }        #endregion        #region 过滤掉 html代码        /// <summary>        /// 过滤html标签        /// </summary>        /// <param name="strHtml">html的内容</param>        /// <returns></returns>        public static string StripHTML(string strHtml)        {            string[] aryReg ={                                  @"<script[^>]*?>.*?</script>",                                  @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>",                                  @"([\r\n])[\s]+",                                  @"&(quot|#34);",                                  @"&(amp|#38);",                                  @"&(lt|#60);",                                  @"&(gt|#62);",                                   @"&(nbsp|#160);",                                   @"&(iexcl|#161);",                                  @"&(cent|#162);",                                  @"&(pound|#163);",                                  @"&(copy|#169);",                                  @"&#(\d+);",                                  @"-->",                                  @"<!--.*\n"                              };            string[] aryRep = {                                   "",                                   "",                                   "",                                   "\"",                                   "&",                                   "<",                                   ">",                                   " ",                                   "\xa1",//chr(161),                                   "\xa2",//chr(162),                                   "\xa3",//chr(163),                                   "\xa9",//chr(169),                                   "",                                   "\r\n",                                   ""                               };            string newReg = aryReg[0];            string strOutput = strHtml;            for (int i = 0; i < aryReg.Length; i++)            {                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(aryReg[i], System.Text.RegularExpressions.RegexOptions.IgnoreCase);                strOutput = regex.Replace(strOutput, aryRep[i]);            }            //strOutput.Replace("<", "");            //strOutput.Replace(">", "");            strOutput = strOutput.Replace("\r\n", "");            return strOutput;        }        #endregion        #region 全角半角转换        /// <summary>        /// 转全角的函数(SBC case)        /// </summary>        /// <param name="input">任意字符串</param>        /// <returns>全角字符串</returns>        ///<remarks>        ///全角空格为12288,半角空格为32        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248        ///</remarks>        public static string ToSBC(string input)        {            //半角转全角:            char[] c = input.ToCharArray();            for (int i = 0; i < c.Length; i++)            {                if (c[i] == 32)                {                    c[i] = (char)12288;                    continue;                }                if (c[i] < 127)                    c[i] = (char)(c[i] + 65248);            }            return new string(c);        }        /// <summary> 转半角的函数(DBC case) </summary>        /// <param name="input">任意字符串</param>        /// <returns>半角字符串</returns>        ///<remarks>        ///全角空格为12288,半角空格为32        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248        ///</remarks>        public static string ToDBC(string input)        {            char[] c = input.ToCharArray();            for (int i = 0; i < c.Length; i++)            {                if (c[i] == 12288)                {                    c[i] = (char)32;                    continue;                }                if (c[i] > 65280 && c[i] < 65375)                    c[i] = (char)(c[i] - 65248);            }            return new string(c);        }        #endregion        #region 传入URL返回网页的html代码        /// <summary>        /// 传入URL返回网页的html代码        /// </summary>        /// <param name="Url">URL</param>        /// <returns></returns>        public static string GetUrltoHtml(string Url)        {            try            {                System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);                // Get the response instance.                System.Net.WebResponse wResp = wReq.GetResponse();                // Read an HTTP-specific property                //if (wResp.GetType() ==HttpWebResponse)                //{                //DateTime updated  =((System.Net.HttpWebResponse)wResp).LastModified;                //}                // Get the response stream.                System.IO.Stream respStream = wResp.GetResponseStream();                // Dim reader As StreamReader = New StreamReader(respStream)                System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));                return reader.ReadToEnd();            }            catch (System.Exception ex)            {                //errorMsg = ex.Message;            }            return "";        }        #endregion        #region MD5加密字符串。截取字符串        /// <summary>        /// 传入明文,返回用MD%加密后的字符串        /// </summary>        /// <param name="str">要加密的字符串</param>        /// <returns>用MD5加密后的字符串</returns>        public static string ToMD5(string str)        {            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "md5");        }        /// <summary>        /// 截取字符串。        /// </summary>        /// <param name="str">要接取得字符串</param>        /// <param name="number">保留的字节数。按半角计算</param>        /// <returns>指定长度的字符串</returns>        public static string StringCal(string str, int number)        {            Byte[] tempStr = System.Text.Encoding.Default.GetBytes(str);            if (tempStr.Length > number)            {                return System.Text.Encoding.Default.GetString(tempStr, 0, number - 2) + "..";            }            else                return str;        }        #endregion        #region 删除文件        /// <summary>        /// 删除文件        /// </summary>        /// <param name="FilePath">文件的物理地址</param>        /// <returns></returns>        public static bool DeleteFile(string FilePath)        {            try            {                System.IO.File.Delete(FilePath);                return true;            }            catch            {                //errorMsg = "删除不成功!";                return false;            }        }        #endregion        #region 验证——数字部分        /// <summary>        /// 判断是否是实数,是返回true 否返回false。可以传入null。        /// </summary>        /// <param name="strVal">要验证的字符串</param>        /// <returns></returns>        public static bool IsNumeric(string strVal)        {            //System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex("-?([0]|([1-9]+\\d{0,}?))(.[\\d]+)?{1}quot;);              //return reg1.IsMatch(strVal);              //string tmp="";            //判断是否为null 和空字符串            if (strVal == null || strVal.Length == 0)                return false;            //判断是否只有.、-、 -.            if (strVal == "." || strVal == "-" || strVal == "-.")                return false;            //记录是否有多个小数点            bool isPoint = false;            //是否有小数点            //去掉第一个负号,中间是不可以有负号的            strVal = strVal.TrimStart('-');            foreach (char c in strVal)            {                if (c == '.')                    if (isPoint)                        return false;                    else                        isPoint = true;                if ((c < '0' || c > '9') && c != '.')                    return false;            }            return true;        }        /// <summary>        /// 判断是否为整数。是返回true 否返回false。可以传入null。        /// </summary>        /// <param name="strVal">要判断的字符</param>        /// <returns></returns>        public static bool IsInt(string strVal)        {            if (strVal == null || strVal.Length == 0)                return false;            //判断是否只有.、-、 -.            if (strVal == "." || strVal == "-" || strVal == "-.")                return false;            //去掉第一个负号,中间是不可以有负号的            if (strVal.Substring(0, 1) == "-")                strVal = strVal.Remove(0, 1);            foreach (char c in strVal)            {                if (c < '0' || c > '9')                    return false;            }            return true;        }        /// <summary>        /// 判断是否为ID串。是返回true 否返回false。可以传入null。        /// </summary>        /// <example >        /// ,1,2,3,4,5,6,7,        /// </example>        /// <param name="strVal">要判断的字符串</param>        /// <returns></returns>        public static bool IsIDString(string strVal)        {            bool flag = false;            if (strVal == null)                return false;            if (strVal == "")                return true;            //判断是否只有 ,            if (strVal == ",")                return false;            //判断第一位是否是,号            if (strVal.Substring(0, 1) == ",")                return false;            //判断最后一位是否是,号            if (strVal.Substring(strVal.Length - 1, 1) == ",")                return false;            foreach (char c in strVal)            {                if (c == ',')                    if (flag) return false; else flag = true;                else if ((c >= '0' && c <= '9'))                    flag = false;                else                    return false;            }            return true;        }        /// <summary>        /// 转换为整数。不是整数的话,返回“-1”        /// </summary>        /// <param name="str">要转换的字符</param>        /// <returns></returns>        public static int StringToInt(string str)        {            //判断是否是数字,是数字返回数字,不是数字返回-1            if (IsInt(str))                return Int32.Parse(str);            else                return -1;        }        /// <summary>        /// 转换为实数。不是实数的话,返回“-1”        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public static float StrTofloat(string str)        {            //判断是否是数字,是数字返回数字,不是数字返回-1            if (IsNumeric(str))                return float.Parse(str);            else                return -1;        }        /// <summary>        /// 验证是否是GUID        /// 6454bc76-5f98-de11-aa4c-00219bf56456        /// </summary>        /// <returns></returns>        public static bool IsGUID(string strVal)        {            if (strVal == null)                return false;            if (strVal == "")                return false;            strVal = strVal.TrimStart('{');            strVal = strVal.TrimEnd('}');            //长度必须是36位            if (strVal.Length != 36)                return false;            foreach (char c in strVal)            {                if (c == '-')                    continue;                else if (c >= 'a' && c <= 'f')                    continue;                else if (c >= 'A' && c <= 'F')                    continue;                else if ((c >= '0' && c <= '9'))                    continue;                else                    return false;            }            return true;        }        #endregion        #region 验证——处理字符串部分        /// <summary>        /// 去掉两边的空格,把“'”替换为“'”SBC        /// </summary>        /// <param name="str">要处理的字符串</param>        /// <returns></returns>        public static string StringReplaceToSBC(string str)        {            //过滤不安全的字符            string tstr;            tstr = str.Trim();            return tstr.Replace("'", "'");        }        /// <summary>        /// 去掉两边的空格,把“'”替换为“''”DBC        /// </summary>        /// <param name="str">要验证的字符串</param>        /// <returns></returns>        public static string StringReplaceToDBC(string str)        {            //过滤不安全的字符            string tstr;            tstr = str.Trim();            return tstr.Replace("'", "''");        }        /// <summary>        /// 去掉两边的空格,把“'”替换为“”        /// </summary>        /// <param name="str">要验证的字符串</param>        /// <returns></returns>        public static string StringReplaceToEmpty(string str)        {            //过滤不安全的字符            string tstr;            tstr = str.Trim();            return tstr.Replace("'", "");        }        #endregion        #region 验证——时间部分        /// <summary>        /// 转换时间。不正确的话,返回当前时间        /// </summary>        /// <param name="isdt">要转换的字符串</param>        /// <returns></returns>        public static DateTime StringToDateTime(string isdt)        {            //判断时间是否正确            DateTime mydt;            try            {                mydt = Convert.ToDateTime(isdt);            }            catch            {                //时间格式不正确                return mydt = DateTime.Now;            }            return mydt;        }        /// <summary>        /// 判断是否是正确的时间格式。正确返回“true”,不正确返回提示信息。        ///         /// </summary>        /// <param name="isdt">要判断的字符串</param>        /// <returns></returns>        public static bool IsDateTime(string isdt)        {            //判断时间是否正确            DateTime mydt;            try            {                mydt = Convert.ToDateTime(isdt);                return true;            }            catch            {                //时间格式不正确                //errorMsg = "您填的时间格式不正确,请按照2004-1-1的形式填写。";                return false;            }        }        #endregion        #region 生成查询条件        /// <summary>        /// 组成查询字符串        /// </summary>        /// <param name="columnName">字段名</param>        /// <param name="keyword">查询条件</param>        /// <param name="hasContent">是否已经有查询条件了,true:加and;false:不加and</param>        /// <param name="colType">1:数字;2:字符串,精确查询;3:字符串,模糊查询,包括时间查询</param>        /// <returns></returns>        public static string GetSearchString(string columnName, string keyword, ref bool hasContent, int colType)        {            if (keyword == "" || keyword == "0")            {                return "";            }            else            {                System.Text.StringBuilder tmp = new System.Text.StringBuilder();                switch (colType)                {                    case 1:                        //数字                        tmp.Append(columnName);                        tmp.Append(" = ");                        tmp.Append(keyword);                        break;                    case 2:                        //字符串,精确查询                        tmp.Append(columnName);                        tmp.Append(" = '");                        tmp.Append(keyword);                        tmp.Append("' ");                        break;                    case 3:                        //字符串,模糊查询,包括时间查询                        tmp.Append(columnName);                        tmp.Append(" like '% ");                        tmp.Append(keyword);                        tmp.Append("%' ");                        break;                }                if (hasContent)                    tmp.Insert(0, " and ");                hasContent = true;                return tmp.ToString();            }        }        #endregion        #region ========解密========        /// <summary>        /// 解密        /// </summary>        /// <param name="Text"></param>        /// <returns></returns>        public static string Decrypt(string Text)        {            return Decrypt(Text, "litianping");        }        /// <summary>         /// 解密数据         /// </summary>         /// <param name="Text"></param>         /// <param name="sKey"></param>         /// <returns></returns>         public static string Decrypt(string Text, string sKey)        {            DESCryptoServiceProvider des = new DESCryptoServiceProvider();            int len;            len = Text.Length / 2;            byte[] inputByteArray = new byte[len];            int x, i;            for (x = 0; x < len; x++)            {                i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);                inputByteArray[x] = (byte)i;            }            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));            System.IO.MemoryStream ms = new System.IO.MemoryStream();            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);            cs.Write(inputByteArray, 0, inputByteArray.Length);            cs.FlushFinalBlock();            return Encoding.Default.GetString(ms.ToArray());        }        #endregion    }    #region 加密、解密字符串    /// <summary>    /// 加密字符串。可以解密    /// </summary>    public class Encryptor    {        #region 加密,固定密钥        /// <summary>        /// 加密        /// </summary>        /// <param name="sourceData">原文</param>        /// <returns></returns>        public static string Encrypt(string sourceData)        {            //set key and initialization vector values            //Byte[] key = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            //Byte[] iv = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            Byte[] key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            Byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            try            {                //convert data to byte array                Byte[] sourceDataBytes = System.Text.ASCIIEncoding.UTF8.GetBytes(sourceData);                //get target memory stream                MemoryStream tempStream = new MemoryStream();                //get encryptor and encryption stream                DESCryptoServiceProvider encryptor = new DESCryptoServiceProvider();                CryptoStream encryptionStream = new CryptoStream(tempStream, encryptor.CreateEncryptor(key, iv), CryptoStreamMode.Write);                //encrypt data                encryptionStream.Write(sourceDataBytes, 0, sourceDataBytes.Length);                encryptionStream.FlushFinalBlock();                //put data into byte array                Byte[] encryptedDataBytes = tempStream.GetBuffer();                //convert encrypted data into string                return System.Convert.ToBase64String(encryptedDataBytes, 0, (int)tempStream.Length);            }            catch (Exception ex)            {                throw (ex);            }        }        #endregion        #region 加密,可以设置密钥        /// <summary>        /// 可以设置密钥的加密方式        /// </summary>        /// <param name="sourceData">原文</param>        /// <param name="key">密钥,8位数字,字符串方式</param>        /// <returns></returns>        public static string Encrypt(string sourceData, string key)        {            //set key and initialization vector values            //Byte[] key = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            //Byte[] iv = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            #region 检查密钥是否符合规定            if (key.Length > 8)            {                key = key.Substring(0, 8);            }            #endregion            char[] tmp = key.ToCharArray();            Byte[] keys = new byte[8];            //Byte[] keys = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            Byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            //设置密钥            for (int i = 0; i < 8; i++)            {                if (tmp.Length > i)                {                    keys[i] = (byte)tmp[i];                }                else                {                    keys[i] = (byte)i;                }            }            try            {                //convert data to byte array                Byte[] sourceDataBytes = System.Text.ASCIIEncoding.UTF8.GetBytes(sourceData);                //get target memory stream                MemoryStream tempStream = new MemoryStream();                //get encryptor and encryption stream                DESCryptoServiceProvider encryptor = new DESCryptoServiceProvider();                CryptoStream encryptionStream = new CryptoStream(tempStream, encryptor.CreateEncryptor(keys, iv), CryptoStreamMode.Write);                //encrypt data                encryptionStream.Write(sourceDataBytes, 0, sourceDataBytes.Length);                encryptionStream.FlushFinalBlock();                //put data into byte array                Byte[] encryptedDataBytes = tempStream.GetBuffer();                //convert encrypted data into string                return System.Convert.ToBase64String(encryptedDataBytes, 0, (int)tempStream.Length);            }            catch (Exception ex)            {                throw (ex);            }        }        #endregion        #region 解密,固定密钥        /// <summary>        /// 解密        /// </summary>        /// <param name="sourceData">密文</param>        /// <returns></returns>        public static string Decrypt(string sourceData)        {            //set key and initialization vector values            //Byte[] key = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            //Byte[] iv = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            Byte[] keys = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            Byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            try            {                //convert data to byte array                Byte[] encryptedDataBytes = System.Convert.FromBase64String(sourceData);                //get source memory stream and fill it                 MemoryStream tempStream = new MemoryStream(encryptedDataBytes, 0, encryptedDataBytes.Length);                //get decryptor and decryption stream                 DESCryptoServiceProvider decryptor = new DESCryptoServiceProvider();                CryptoStream decryptionStream = new CryptoStream(tempStream, decryptor.CreateDecryptor(keys, iv), CryptoStreamMode.Read);                //decrypt data                 StreamReader allDataReader = new StreamReader(decryptionStream);                return allDataReader.ReadToEnd();            }            catch (Exception ex)            {                throw (ex);            }        }        #endregion        #region 解密,固定密钥        /// <summary>        /// 解密        /// </summary>        /// <param name="sourceData">密文</param>        /// <param name="key">密钥,8位数字,字符串方式</param>        /// <returns></returns>        public static string Decrypt(string sourceData, string key)        {            //set key and initialization vector values            //Byte[] key = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            //Byte[] iv = new byte[] {0x21, 2, 0x88, 4, 5, 0x56, 7, 0x99};            #region 检查密钥是否符合规定            if (key.Length > 8)            {                key = key.Substring(0, 8);            }            #endregion            char[] tmp = key.ToCharArray();            Byte[] keys = new byte[8];            //Byte[] keys = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            Byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };            //设置密钥            for (int i = 0; i < 8; i++)            {                if (tmp.Length > i)                {                    keys[i] = (byte)tmp[i];                }                else                {                    keys[i] = (byte)i;                }            }            try            {                //convert data to byte array                Byte[] encryptedDataBytes = System.Convert.FromBase64String(sourceData);                //get source memory stream and fill it                 MemoryStream tempStream = new MemoryStream(encryptedDataBytes, 0, encryptedDataBytes.Length);                //get decryptor and decryption stream                 DESCryptoServiceProvider decryptor = new DESCryptoServiceProvider();                CryptoStream decryptionStream = new CryptoStream(tempStream, decryptor.CreateDecryptor(keys, iv), CryptoStreamMode.Read);                //decrypt data                 StreamReader allDataReader = new StreamReader(decryptionStream);                return allDataReader.ReadToEnd();            }            catch (Exception ex)            {                throw (ex);            }        }        #endregion        /// <summary>        /// 对需要加密的字串进行MD5加密(针对密码加密)        /// </summary>        /// <param name="ConvertString">需要加密的字串</param>        /// <returns>加密后的字串</returns>        /// <remarks>        /// Modifier: Xiaoliang Ge        /// Modified Date: 2009-12-26        /// </remarks>        public static string MD5EncryptStr(string ConvertString)        {            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();            string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)),                4, 8);            return t2;        }    }    #endregion}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝拍下商品不付款怎么办 淘宝买东西取消订单淘金币怎么办 淘宝淘金币快过期了怎么办 公众号密码忘了怎么办 酷狗直播个入驻粉丝少怎么办 健康证预约显示未接收怎么办 在互惠车贷逾期怎么办 天天中彩票怎么登陆不了怎么办 正宇新商城不能提现怎么办 融e购买完不发货怎么办 婴儿肚子胀气肚脐凸出来怎么办 微信商城买东西被骗了怎么办 拼多多商家不发货怎么办 鞋上的饰品掉了怎么办 饰品上的钻掉了怎么办 dota2饰品被好友礼物怎么办 dota2接收的礼物打不开怎么办 英雄联盟线上被压制怎么办 云联商城的钱怎么办 高顿财经不退款怎么办 拼多多连不上网怎么办 拼多多评分太低怎么办 拼多多限制提现怎么办 手机收不到验证码怎么办 淘宝未发货怎么取消退款怎么办 羊皮的鞋子刮坏怎么办 退货寄错了东西怎么办 毒app上买鞋尺码不合适怎么办 拼多多一直不发货怎么办 天猫国际买东西被税要退货怎么办 国外快递被税了怎么办 手机上传图片时过大怎么办 原网页被重新排版怎么办 文件目录损坏且无法读取怎么办 360木马查杀蓝屏怎么办 电脑上传的文件大小超过限制怎么办 文件最大不超过200m怎么办 抖音上传文件太大怎么办 下载ppt变成php文件怎么办 数据库bak文件损坏了怎么办? wps文档大小超出上传限制怎么办