zoukankan      html  css  js  c++  java
  • 贴几个从Dnt论坛代码里边扣出来的函数

    这几天一直在看他写的代码。有一些代码感觉挺有用的,贴出来大家分享。

    下边代码都是从他的龙套类(Utils.cs)里边找出来的。

    /// <summary>
    /// 返回字符串真实长度, 1个汉字长度为2
    /// </summary>
    /// <returns>字符长度</returns>
    public static int GetStringLength(string str)
    {
        return Encoding.Default.GetBytes(str).Length;
    }

    /// <summary>
           /// 判断指定字符串在指定字符串数组中的位置
           /// </summary>
           /// <param name="strSearch">字符串</param>
           /// <param name="stringArray">字符串数组</param>
           /// <param name="caseInsensetive">是否不区分大小写, true为不区分, false为区分</param>
           /// <returns>字符串在指定字符串数组中的位置, 如不存在则返回-1</returns>
           public static int GetInArrayID(string strSearch, string[] stringArray, bool caseInsensetive)
           {
               for (int i = 0; i < stringArray.Length; i++)
               {
                   if (caseInsensetive)
                   {
                       if (strSearch.ToLower() == stringArray[i].ToLower())
                           return i;
                   }
                   else if (strSearch == stringArray[i])
                       return i;
               }
               return -1;
           }

    /// <summary>
            /// MD5函数
            /// </summary>
            /// <param name="str">原始字符串</param>
            /// <returns>MD5结果</returns>
            public static string MD5(string str)
            {
                byte[] b = Encoding.Default.GetBytes(str);
                b = new MD5CryptoServiceProvider().ComputeHash(b);
                string ret = "";
                for (int i = 0; i < b.Length; i++)
                    ret += b[i].ToString("x").PadLeft(2, '0');

                return ret;
            }

    /// <summary>
           /// SHA256函数
           /// </summary>
           /// /// <param name="str">原始字符串</param>
           /// <returns>SHA256结果</returns>
           public static string SHA256(string str)
           {
               byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
               SHA256Managed Sha256 = new SHA256Managed();
               byte[] Result = Sha256.ComputeHash(SHA256Data);
               return Convert.ToBase64String(Result);  //返回长度为44字节的字符串
           }

    /// <summary>
    /// 根据阿拉伯数字返回月份的名称(可更改为某种语言)
    /// </summary>   
    public static string[] Monthes
    {
        get
        {
            return new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
        }
    }

    /// <summary>
            /// 清除字符串数组中的重复项
            /// </summary>
            /// <param name="strArray">字符串数组</param>
            /// <param name="maxElementLength">字符串数组中单个元素的最大长度</param>
            /// <returns></returns>
            public static string[] DistinctStringArray(string[] strArray, int maxElementLength)
            {
                Hashtable h = new Hashtable();

                foreach (string s in strArray)
                {
                    string k = s;
                    if (maxElementLength > 0 && k.Length > maxElementLength)
                    {
                        k = k.Substring(0, maxElementLength);
                    }
                    h[k.Trim()] = s;
                }

                string[] result = new string[h.Count];

                h.Keys.CopyTo(result, 0);

                return result;
            }

    /// <summary>
            /// 格式化字节数字符串
            /// </summary>
            /// <param name="bytes"></param>
            /// <returns></returns>
            public static string FormatBytesStr(int bytes)
            {
                if (bytes > 1073741824)
                    return ((double)(bytes / 1073741824)).ToString("0") + "G";

                if (bytes > 1048576)
                    return ((double)(bytes / 1048576)).ToString("0") + "M";

                if (bytes > 1024)
                    return ((double)(bytes / 1024)).ToString("0") + "K";

                return bytes.ToString() + "Bytes";
            }

    /// <summary>
    /// 是否为ip
    /// </summary>
    /// <param name="ip"></param>
    /// <returns></returns>
    public static bool IsIP(string ip)
    {
        return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
    }

    /// <summary>
           /// 将全角数字转换为数字
           /// </summary>
           /// <param name="SBCCase"></param>
           /// <returns></returns>
           public static string SBCCaseToNumberic(string SBCCase)
           {
               char[] c = SBCCase.ToCharArray();
               for (int i = 0; i < c.Length; i++)
               {
                   byte[] b = System.Text.Encoding.Unicode.GetBytes(c, i, 1);
                   if (b.Length == 2)
                   {
                       if (b[1] == 255)
                       {
                           b[0] = (byte)(b[0] + 32);
                           b[1] = 0;
                           c[i] = System.Text.Encoding.Unicode.GetChars(b)[0];
                       }
                   }
               }
               return new string(c);
           }

           /// <summary>
           /// 将字符串转换为Color
           /// </summary>
           /// <param name="color"></param>
           /// <returns></returns>
           public static Color ToColor(string color)
           {
               int red, green, blue = 0;
               char[] rgb;
               color = color.TrimStart('#');
               color = Regex.Replace(color.ToLower(), "[g-zG-Z]", "");
               switch (color.Length)
               {
                   case 3:
                       rgb = color.ToCharArray();
                       red = Convert.ToInt32(rgb[0].ToString() + rgb[0].ToString(), 16);
                       green = Convert.ToInt32(rgb[1].ToString() + rgb[1].ToString(), 16);
                       blue = Convert.ToInt32(rgb[2].ToString() + rgb[2].ToString(), 16);
                       return Color.FromArgb(red, green, blue);
                   case 6:
                       rgb = color.ToCharArray();
                       red = Convert.ToInt32(rgb[0].ToString() + rgb[1].ToString(), 16);
                       green = Convert.ToInt32(rgb[2].ToString() + rgb[3].ToString(), 16);
                       blue = Convert.ToInt32(rgb[4].ToString() + rgb[5].ToString(), 16);
                       return Color.FromArgb(red, green, blue);
                   default:
                       return Color.FromName(color);

               }
           }

  • 相关阅读:
    day09 文件操作
    深信服二面
    test1
    视频测试
    通过独立按键控制LED灯
    第一个LED灯
    为什么我的递归调用次数和书上的不一样?
    函数指针数组
    虚拟内存
    单元测试
  • 原文地址:https://www.cnblogs.com/zyqgold/p/1664700.html
Copyright © 2011-2022 走看看