C# 一些常用的字符串扩展方法

来源:互联网 发布:淘宝开店加盟骗局 编辑:程序博客网 时间:2024/05/21 06:13
/// <summary>    /// 扩展字符串类    /// </summary>    public static class EString    {        #region 数据转换        #region 转Int        /// <summary>        /// 转Int,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static int ToInt(this string t)        {            int n;            if (!int.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转Int,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static int ToInt(this string t, int pReturn)        {            int n;            if (!int.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是Int true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsInt(this string t)        {            int n;            return int.TryParse(t, out n);        }        #endregion        #region 转Int16        /// <summary>        /// 转Int,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static Int16 ToInt16(this string t)        {            Int16 n;            if (!Int16.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转Int,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static Int16 ToInt16(this string t, Int16 pReturn)        {            Int16 n;            if (!Int16.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是Int true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsInt16(this string t)        {            Int16 n;            return Int16.TryParse(t, out n);        }        #endregion        #region 转byte        /// <summary>        /// 转byte,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static byte Tobyte(this string t)        {            byte n;            if (!byte.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转byte,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static byte Tobyte(this string t, byte pReturn)        {            byte n;            if (!byte.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是byte true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool Isbyte(this string t)        {            byte n;            return byte.TryParse(t, out n);        }        #endregion        #region 转Long        /// <summary>        /// 转Long,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static long ToLong(this string t)        {            long n;            if (!long.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转Long,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static long ToLong(this string t, long pReturn)        {            long n;            if (!long.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是Long true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsLong(this string t)        {            long n;            return long.TryParse(t, out n);        }        #endregion        #region 转Double        /// <summary>        /// 转Int,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static double ToDouble(this string t)        {            double n;            if (!double.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转Double,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static double ToDouble(this string t, double pReturn)        {            double n;            if (!double.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是Double true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsDouble(this string t)        {            double n;            return double.TryParse(t, out n);        }        #endregion        #region 转Decimal        /// <summary>        /// 转Decimal,失败返回0        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static decimal ToDecimal(this string t)        {            decimal n;            if (!decimal.TryParse(t, out n))                return 0;            return n;        }        /// <summary>        /// 转Decimal,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static decimal ToDecimal(this string t, decimal pReturn)        {            decimal n;            if (!decimal.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 是否是Decimal true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsDecimal(this string t)        {            decimal n;            return decimal.TryParse(t, out n);        }        #endregion        #region 转DateTime        /// <summary>        /// 转DateTime,失败返回当前时间        /// </summary>        /// <param name="e"></param>        /// <returns></returns>        public static DateTime ToDateTime(this string t)        {            DateTime n;            if (!DateTime.TryParse(t, out n))                return DateTime.Now;            return n;        }        /// <summary>        /// 转DateTime,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static DateTime ToDateTime(this string t, DateTime pReturn)        {            DateTime n;            if (!DateTime.TryParse(t, out n))                return pReturn;            return n;        }        /// <summary>        /// 转DateTime,失败返回pReturn        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static string ToDateTime(this string t, string pFormat, string pReturn)        {            DateTime n;            if (!DateTime.TryParse(t, out n))                return pReturn;            return n.ToString(pFormat);        }        /// <summary>        /// 转DateTime,失败返回空        /// </summary>        /// <param name="e"></param>        /// <param name="pReturn">失败返回的值</param>        /// <returns></returns>        public static string ToDateTime(this string t, string pFormat)        {            return t.ToDateTime(pFormat, string.Empty);        }        public static string ToShortDateTime(this string t)        {            return t.ToDateTime("yyyy-MM-dd", string.Empty);        }        /// <summary>        /// 是否是DateTime true:是 false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsDateTime(this string t)        {            DateTime n;            return DateTime.TryParse(t, out n);        }        #endregion        #region 与int[]相关        /// <summary>        /// 转int[],字符串以逗号(,)隔开,请确保字符串内容都合法,否则会出错        /// </summary>        /// <param name="pStr"></param>        /// <returns></returns>        public static int[] ToIntArr(this string t)        {            return t.ToIntArr(new char[] { ',' });        }        /// <summary>        /// 转int[],字符串以逗号(,)隔开,请确保字符串内容都合法,否则会出错        /// </summary>        /// <param name="t"></param>        /// <param name="pSplit">隔开的</param>        /// <returns></returns>        public static int[] ToIntArr(this string t, char[] pSplit)        {            if (t.Length == 0)            {                return new int[] { };            }            string[] ArrStr = t.Split(pSplit, StringSplitOptions.None);            int[] iStr = new int[ArrStr.Length];            for (int i = 0; i < ArrStr.Length; i++)                iStr[i] = int.Parse(ArrStr[i]);            return iStr;        }        #endregion        #region 过滤字符串的非int,重新组合成字符串        /// <summary>        /// 过滤字符串的非int,重新组合成字符串        /// </summary>        /// <param name="t"></param>        /// <param name="pSplit">分隔符</param>        /// <returns></returns>        public static string ClearNoInt(this string t, char pSplit)        {            string sStr = string.Empty;            string[] ArrStr = t.Split(pSplit);            for (int i = 0; i < ArrStr.Length; i++)            {                string lsStr = ArrStr[i];                if (lsStr.IsInt())                    sStr += lsStr + pSplit;                else                    continue;            }            if (sStr.Length > 0)                sStr = sStr.TrimEnd(pSplit);            return sStr;        }        /// <summary>        /// 过滤字符串的非int,重新组合成字符串        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static string ClearNoInt(this string t)        {            return t.ClearNoInt(',');        }        #endregion        #region 是否可以转换成int[]        /// <summary>        /// 是否可以转换成int[],true:是,false:否        /// </summary>        /// <param name="t"></param>        /// <param name="pSplit">分隔符</param>        /// <returns></returns>        public static bool IsIntArr(this string t, char pSplit)        {            string[] ArrStr = t.Split(pSplit);            bool b = true;            for (int i = 0; i < ArrStr.Length; i++)            {                if (!ArrStr[i].IsInt())                {                    b = false;                    break;                }            }            return b;        }        /// <summary>        /// 是否可以转换成int[],true:是,false:否        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static bool IsIntArr(this string t)        {            return t.IsIntArr(',');        }        #endregion        #endregion        #region 载取左字符        /// <summary>        /// 载取左字符        /// </summary>        /// <param name="t"></param>        /// <param name="pLen">字符个数</param>        /// <param name="pReturn">超出时后边要加的返回的内容</param>        /// <returns></returns>        public static string Left(this string t, int pLen, string pReturn)        {            if (t == null || t.Length == 0)                return string.Empty;            pLen *= 2;            int i = 0, j = 0;            foreach (char c in t)            {                if (c > 127)                {                    i += 2;                }                else                {                    i++;                }                if (i > pLen)                {                    return t.Substring(0, j) + pReturn;                }                j++;            }            return t;        }        public static string Left(this string t, int pLen)        {            return Left(t, pLen, string.Empty);        }        public static string StrLeft(this string t, int pLen)        {            if (t == null)            {                return "";            }            if (t.Length > pLen)            {                return t.Substring(0, pLen);            }            return t;        }        #endregion        #region 删除文件名或路径的特殊字符        private class ClearPathUnsafeList        {            public static readonly string[] unSafeStr = { "/", "\\", ":", "*", "?", "\"", "<", ">", "|" };        }        /// <summary>        /// 删除文件名或路径的特殊字符        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static string ClearPathUnsafe(this string t)        {            foreach (string s in ClearPathUnsafeList.unSafeStr)            {                t = t.Replace(s, "");            }            return t;        }        #endregion        #region 字符串真实长度 如:一个汉字为两个字节        /// <summary>        /// 字符串真实长度 如:一个汉字为两个字节        /// </summary>        /// <param name="s"></param>        /// <returns></returns>        public static int LengthReal(this string s)        {            return Encoding.Default.GetBytes(s).Length;        }        #endregion        #region 去除小数位最后为0的        /// <summary>        /// 去除小数位最后为0的        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static decimal ClearDecimal0(this string t)        {            decimal d;            if (decimal.TryParse(t, out d))            {                return decimal.Parse(double.Parse(d.ToString("g")).ToString());            }            return 0;        }        #endregion        #region 进制转换        /// <summary>        /// 16进制转二进制        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static string Change16To2(this string t)        {            String BinOne = string.Empty;            String BinAll = string.Empty;            char[] nums = t.ToCharArray();            for (int i = 0; i < nums.Length; i++)            {                string number = nums[i].ToString();                int num = Int32.Parse(number, System.Globalization.NumberStyles.HexNumber);                BinOne = Convert.ToString(num, 2).PadLeft(4, '0');                BinAll = BinAll + BinOne;            }            return BinAll;        }        /// <summary>        /// 二进制转十进制        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static Int64 Change2To10(this string t)        {            char[] arrc = t.ToCharArray();            Int64 all = 0, indexC = 1;            for (int i = arrc.Length - 1; i >= 0; i--)            {                if (arrc[i] == '1')                {                    all += indexC;                }                indexC = indexC * 2;            }            return all;        }        /// <summary>        /// 二进制转换byte[]数组        /// </summary>        /// <param name="s"></param>        /// <returns></returns>        public static byte[] Change2ToBytes(this string t)        {            List<byte> list = new List<byte>();            char[] arrc = t.ToCharArray();            byte n = 0;            char c;            int j = 0;            //倒序获取位            for (int i = arrc.Length - 1; i >= 0; i--)            {                c = arrc[i];                if (c == '1')                {                    n += Convert.ToByte(Math.Pow(2, j));                }                j++;                if (j % 8 == 0)                {                    list.Add(n);                    j = 0;                    n = 0;                }            }            //剩余最高位            if (n > 0)                list.Add(n);            byte[] arrb = new byte[list.Count];            int j1 = 0;            //倒序            for (int i = list.Count - 1; i >= 0; i--)            {                arrb[j1] = list[i];                j1++;            }            return arrb;        }        /// <summary>        /// 二进制转化为索引id数据,从右到左        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static int[] Change2ToIndex(this string t)        {            List<int> list = new List<int>();            char[] arrc = t.ToCharArray();            char c;            int j = 0;            //倒序获取位            for (int i = arrc.Length - 1; i >= 0; i--)            {                j++;                c = arrc[i];                if (c == '1')                {                    list.Add(j);                }            }            return list.ToArray();        }        #endregion        #region html url编码 解码        /// <summary>        /// Html Encode        /// </summary>        /// <param name="pStr"></param>        /// <returns></returns>        public static string HtmlEncode(this string t)        {            return HttpContext.Current.Server.HtmlEncode(t);        }        /// <summary>        /// Html Decode        /// </summary>        /// <param name="pStr"></param>        /// <returns></returns>        public static string HtmlDecode(this string t)        {            return HttpContext.Current.Server.HtmlDecode(t);        }        /// <summary>        /// URL Encode        /// </summary>        /// <param name="pStr"></param>        /// <returns></returns>        public static string URLEncode(this string t)        {            return HttpContext.Current.Server.UrlEncode(t);        }        /// <summary>        /// URL Decode        /// </summary>        /// <param name="pStr"></param>        /// <returns></returns>        public static string URLDecode(this string t)        {            return HttpContext.Current.Server.UrlDecode(t);        }        #endregion        #region 向客户端输出内容        /// <summary>        /// 向客户端输出内容        /// </summary>        /// <param name="t"></param>        public static void Write(this string t)        {            HttpContext.Current.Response.Write(t);        }        /// <summary>        /// 向客户端输出内容        /// </summary>        /// <param name="t"></param>        public static void WriteLine(this string t)        {            HttpContext.Current.Response.Write(t + "<br />");        }        #endregion    }
原创粉丝点击