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;
}
}