using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
    public static class ExtensionFuncation
    {

        #region 判断是否为空

        /// <summary>
        /// 判断对象是否为null或者为空
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool IfIsNullOrEmpty(this object o)
        {
            if (null == o || o.Equals(""))
                return true;
            else
                return false;
        }

        /// <summary>
        /// 判断对象是否为null或者为空
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool IfIsNullOrEmpty(this string o)
        {
            if (string.IsNullOrWhiteSpace(o)) return true;
            else
                return false;
        }

        /// <summary>
        /// 判断对象是否为null或者为空
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool IfIsNullOrEmpty<T>(this List<T> o)
        { 
            if(null == o || o.Count == 0)
                return true;
            else
                return false;
        }

        /// <summary>
        /// 判断对象是否为null或者为空
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool IfIsNullOrEmpty<T>(this IList<T> o)
        { 
            if(null == o || o.Count == 0)
                return true;
            else
                return false;
        }

        /// <summary>
        /// 判断对象是否为null或者为空
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static bool IfIsNullOrEmpty<K, V>(this Dictionary<K, V> o)
        {
            if (null == o || o.Count == 0)
                return true;
            else
                return false;
        }


        #endregion

        #region 带默认值的类型转换


        /// <summary>
        /// 类型转换带默认值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="o"></param>
        /// <param name="defaultValue">如果转换失败返回的默认值</param>
        /// <returns></returns>
        public static T ConvertToType<T>(this object o, T defaultValue)
        {
            try
            {
                return (T)System.Convert.ChangeType(o, typeof(T), null);
            }
            catch
            {
                return defaultValue;
            }
        }
        /// <summary>
        /// 类型转换带默认值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="o"></param>
        /// <param name="defaultValue">如果转换失败返回的默认值</param>
        /// <returns></returns>
        public static T ConvertToType<T>(this string o, T defaultValue)
        {
            try
            {
                return (T)System.Convert.ChangeType(o, typeof(T), null);
            }
            catch
            {
                return defaultValue;
            }
        }

        #endregion


        #region 提取中文首字母



        /// <summary>
        /// 返回中文首字母小写格式的
        /// </summary>
        /// <param name="paramChinese"></param>
        /// <param name="ifToUpper">是否转成大写字母返回</param>
        /// <returns></returns>
        public static string GetFirstLetter(this string paramChinese, bool ifToUpper)
         {

             string strTemp = "";
 
             int iLen = paramChinese.Length;
 
             int i = 0;
 
 
 
             for (i = 0; i <= iLen - 1; i++)
             {
 
                 strTemp += GetCharSpellCode(paramChinese.Substring(i, 1));
 
             }

             return ifToUpper ? strTemp.ToUpper() : strTemp.ToLower();

         }

          /// <summary>  

          /// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母  

          /// </summary>  

          /// <param name="CnChar">单个汉字</param>  

          /// <returns>单个大写字母</returns>  

          private static string GetCharSpellCode(string paramChar)
          {

              long iCnChar;



              byte[] ZW = System.Text.Encoding.Default.GetBytes(paramChar);



              //如果是字母,则直接返回  

              if (ZW.Length == 1)
              {
                  return paramChar.ToUpper();

              }

              else
              {

                  // get the array of byte from the single char  

                  int i1 = (short)(ZW[0]);

                  int i2 = (short)(ZW[1]);

                  iCnChar = i1 * 256 + i2;

              }



              //expresstion  

              //table of the constant list  

              // 'A'; //45217..45252  

              // 'B'; //45253..45760  

              // 'C'; //45761..46317  

              // 'D'; //46318..46825  

              // 'E'; //46826..47009  

              // 'F'; //47010..47296  

              // 'G'; //47297..47613  



              // 'H'; //47614..48118  

              // 'J'; //48119..49061  

              // 'K'; //49062..49323  

              // 'L'; //49324..49895  

              // 'M'; //49896..50370  

              // 'N'; //50371..50613  

              // 'O'; //50614..50621  

              // 'P'; //50622..50905  

              // 'Q'; //50906..51386  



              // 'R'; //51387..51445  

              // 'S'; //51446..52217  

              // 'T'; //52218..52697  

              //没有U,V  

              // 'W'; //52698..52979  

              // 'X'; //52980..53640  

              // 'Y'; //53689..54480  

              // 'Z'; //54481..55289  



              // iCnChar match the constant  

              if ((iCnChar >= 45217) && (iCnChar <= 45252))
              {

                  return "A";

              }

              else if ((iCnChar >= 45253) && (iCnChar <= 45760))
              {

                  return "B";

              }

              else if ((iCnChar >= 45761) && (iCnChar <= 46317))
              {

                  return "C";

              }

              else if ((iCnChar >= 46318) && (iCnChar <= 46825))
              {

                  return "D";

              }

              else if ((iCnChar >= 46826) && (iCnChar <= 47009))
              {

                  return "E";

              }

              else if ((iCnChar >= 47010) && (iCnChar <= 47296))
              {

                  return "F";

              }

              else if ((iCnChar >= 47297) && (iCnChar <= 47613))
              {

                  return "G";

              }

              else if ((iCnChar >= 47614) && (iCnChar <= 48118))
              {

                  return "H";

              }

              else if ((iCnChar >= 48119) && (iCnChar <= 49061))
              {

                  return "J";

              }

              else if ((iCnChar >= 49062) && (iCnChar <= 49323))
              {
                  return "K";

              }

              else if ((iCnChar >= 49324) && (iCnChar <= 49895))
              {

                  return "L";

              }

              else if ((iCnChar >= 49896) && (iCnChar <= 50370))
              {

                  return "M";

              }



              else if ((iCnChar >= 50371) && (iCnChar <= 50613))
              {

                  return "N";

              }

              else if ((iCnChar >= 50614) && (iCnChar <= 50621))
              {

                  return "O";

              }

              else if ((iCnChar >= 50622) && (iCnChar <= 50905))
              {

                  return "P";

              }

              else if ((iCnChar >= 50906) && (iCnChar <= 51386))
              {

                  return "Q";

              }

              else if ((iCnChar >= 51387) && (iCnChar <= 51445))
              {

                  return "R";

              }

              else if ((iCnChar >= 51446) && (iCnChar <= 52217))
              {

                  return "S";

              }

              else if ((iCnChar >= 52218) && (iCnChar <= 52697))
              {

                  return "T";

              }

              else if ((iCnChar >= 52698) && (iCnChar <= 52979))
              {

                  return "W";

              }

              else if ((iCnChar >= 52980) && (iCnChar <= 53688))
              {

                  return "X";

              }

              else if ((iCnChar >= 53689) && (iCnChar <= 54480))
              {

                  return "Y";

              }

              else if ((iCnChar >= 54481) && (iCnChar <= 55289))
              {

                  return "Z";
              }
              else return ("?");

          }
        #endregion

    }
}

 

posted on 2012-07-06 16:38  ﹎蓝言觅ぷ雨  阅读(756)  评论(6编辑  收藏  举报