c# 常用扩展方法

 public static class Expand {

        public static void Dellogs() {

            Task.Factory.StartNew(() => {
                var path = AppDomain.CurrentDomain.BaseDirectory + "logs\\"; //文件夹路径
                if (!Directory.Exists(path)) return;

                var dyInfo = new DirectoryInfo(path);
                foreach (var feInfo in dyInfo.GetFiles()) { if (feInfo.LastWriteTime < DateTime.Now.AddDays(-7)) feInfo.Delete(); }
            });
        }

        public static string GetIp {
            get {
                var localIp = "";
                var host = Dns.GetHostEntry(Dns.GetHostName());
                foreach (var ip in host.AddressList) { if (ip.AddressFamily.ToString() == "InterNetwork") localIp = ip.ToString(); }
                return localIp;
            }

        }

        public static bool IsEmpty(this string s) { return string.IsNullOrWhiteSpace(s); }

        public static bool IsNumber(this string s) {
            if (s == null || s.Trim().Length == 0) return false;
            if (!char.IsNumber(s[0]) && s[0] != '-') return false;
            for (var i = 1; i < s.Length; i++) if (!char.IsNumber(s[i])) return false;
            return true;
        }

        public static string Json(this object o) { return new JavaScriptSerializer().Serialize(o); }

        public static T JsonParse<T>(this string s) { return new JavaScriptSerializer().Deserialize<T>(s); }

        public static object JsonParse(this string s) { return new JavaScriptSerializer().Deserialize<object>(s); }

        public static string[] Split(this string s, params string[] p) { return s.Split(p, StringSplitOptions.None); }

        public static byte[] Remove(this byte[] b, byte cut = 0x00) {
            var list = new List<byte>();
            list.AddRange(b);
            for (var i = list.Count - 1; i >= 0; i--) {
                if (list[i] == cut) { list.RemoveAt(i); } else { break; }
            }
            var lastbyte = new byte[list.Count];
            for (var i = 0; i < list.Count; i++) {
                lastbyte[i] = list[i];
            }
            return lastbyte;
        }

        public static string Getstr(this string str, string name) { return str.Match("\"" + name + @""":""([^""]+)", 1); }

        public static string Getmoney(this string str, string name) { return str.Match("\"" + name + @""":""?([\-\d\.]+)", 1); }

        public static string Match(this string s, string p, int i = 0) {
            if (string.IsNullOrEmpty(s) || string.IsNullOrEmpty(p)) return string.Empty;
            var match = Regex.Match(s, p);
            if (i < match.Groups.Count) return match.Groups[i].Value;
            i = 0;
            return match.Groups[i].Value;
        }

        public static string ToHexStr(this byte[] b) { return BitConverter.ToString(b, 0, b.Length).Replace("-", " "); }

        public static string Hash(this string s) { return string.Join("", MD5.Create().ComputeHash(Encoding.Default.GetBytes(s)).Select(v => v.ToString("x2"))); }

        public static byte[] ToBytes(this string s) {
            s = Replace(s, @"[^\dA-Fa-f]+", "");
            if (s.Length % 2 > 0) s = "0" + s;
            var max = s.Length / 2;
            var buf = new byte[max];
            for (var i = 0; i < max; i++) buf[i] = Convert.ToByte(s.Substring(i * 2, 2), 16);
            return buf;
        }

        public static string Replace(this string s, string p, string r) {
            return Regex.Replace(s, p, r);
        }

        public static long ToTicksPerMillisecond(this DateTime date) {
            var ticks = date.ToUniversalTime().Ticks - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
            var timeSpan = ticks / TimeSpan.TicksPerMillisecond;
            return timeSpan;
        }

        public static long ToTicksPerSecond(this DateTime date) {
            var ticks = date.ToUniversalTime().Ticks - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
            var timeSpan = ticks / TimeSpan.TicksPerSecond;
            return timeSpan;
        }

        public static long ToTicks(this DateTime date) {

            var timeSpan = $"{date:yyMMddHHmmssfff}{new Random().Next(1000, 9999)}".ToLong();
            return timeSpan;
        }

        public static string ToStr(this object o) { return string.Concat(o); }

        public static int ToInt(this object o, int def = 0) {
            if (o == null || o is DBNull) return def;
            if (o.ToString().Trim() == "") return def;
            int r;
            if (!int.TryParse(o.ToString(), out r)) o.ToStr();
            return r;
        }

        public static long ToLong(this object o, long def = 0) {
            if (o == null || o is DBNull) return def;
            var str = o.ToString();
            if (str == string.Empty) return def;
            double n = 0;
            if (double.TryParse(str, out n)) return (long)n;
            return def;

        }

        public static ulong ToULong(this object o, ulong def = 0) {
            if (o == null || o is DBNull) return def;
            var str = o.ToString().Trim().ToLower();
            int i;
            if (str.IndexOf("e-", StringComparison.Ordinal) > 0) return def;
            if (str.IndexOf("e+", StringComparison.Ordinal) > 0) {
                i = str.IndexOf("e+", StringComparison.Ordinal);
                var a = ulong.Parse(str.Substring(0, i));
                i += 2;
                return a * ulong.Parse(str.Substring(i, str.Length - i));
            }
            i = str.IndexOf('.');
            if (i > -1) return ulong.Parse(str.Substring(0, i));
            return str.IsEmpty() ? def : ulong.Parse(str);
        }

        public static double ToDouble(this object o, long def = 0) {
            if (o == null || o is DBNull) return def;
            return double.Parse(o.ToString());
        }

        public static string ToStrError(this string msg) {

            var md = new System.Diagnostics.StackTrace(1, true).GetFrame(0).GetMethod();
            msg = $"{msg}{Environment.NewLine}" +
                  $"Source=>>>模块名.{md.Module}{Environment.NewLine}" +
                  $"Source=>>>命名空间名.{md.DeclaringType?.Namespace}{Environment.NewLine}" +
                  $"Source=>>>类名.{md.DeclaringType?.Name}{Environment.NewLine}" +
                  $"Source=>>>方法名.{md}{Environment.NewLine}" +
                  $"Source=>>>代码行号.{new System.Diagnostics.StackTrace(1, true).GetFrame(0).GetFileLineNumber()}";
            return msg;

        }

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值