using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; namespace VaporRecoveryOnlineWatchHubApp { public static class Util { // 中式四舍五入 public static decimal Round(T input, int digits = 2) { return Math.Round(Convert.ToDecimal(input), digits, MidpointRounding.AwayFromZero); } // 中式四舍五入 public static double RoundToDouble(T input, int digits = 2) { return (double)Math.Round(Convert.ToDecimal(input), digits, MidpointRounding.AwayFromZero); } } public static class StringExtension { //"""全角转半角""" /// 转全角的函数(SBC case) /// ///任意字符串 ///全角字符串 /// ///全角空格为12288,半角空格为32 ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// public static string ToSBC(this string input) { // 半角转全角: char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c[i] == 32) { c[i] = (char)12288; continue; } if (c[i] < 127) c[i] = (char)(c[i] + 65248); } return new string(c); } /**/ // / // / 转半角的函数(DBC case) // / // /任意字符串 // /半角字符串 // / // /全角空格为12288,半角空格为32 // /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 // / public static string ToDBC(this string input) { char[] c = input.ToCharArray(); for (int i = 0; i < c.Length; i++) { if (c[i] == 12288) { c[i] = (char)32; continue; } if (c[i] > 65280 && c[i] < 65375) c[i] = (char)(c[i] - 65248); } return new string(c); } // 移除空格 public static string RemoveSpaces(this string input) { return input.Replace(" ", ""); } // 移除String List里的元素 public static string RemoveStringList(this string input, List strList) { var output = input; strList.ForEach(s => { output = output.Replace(s, ""); }); return output; } // 移除前缀字符串 public static string RemovePrefixString(this string self, string str) { string strRegex = @"^(" + str + ")"; return Regex.Replace(self, strRegex, ""); } // 移除后缀字符串 public static string RemoveSuffixString(this string self, string str) { string strRegex = @"(" + str + ")" + "$"; return Regex.Replace(self, strRegex, ""); } // 是否为Email public static bool IsEmail(this string self) { return self.RegexMatch(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"); } // 是否为域名 public static bool IsDomain(this string self) { return self.RegexMatch(@"[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?"); } // 是否为IP地址 public static bool IsIP(this string self) { return self.RegexMatch(@"((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))"); } // 是否为手机号码 public static bool IsMobilePhone(this string self) { return self.RegexMatch(@"^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$"); } // 匹配正则表达式 public static bool RegexMatch(this string slef, string pattern) { Regex reg = new Regex(pattern); return reg.Match(slef).Success; } // 转换为MD5, 加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位 public static string ConvertToMD5(this string self, string flag = "x2") { byte[] sor = Encoding.UTF8.GetBytes(self); MD5 md5 = MD5.Create(); byte[] result = md5.ComputeHash(sor); StringBuilder strbul = new StringBuilder(40); for (int i = 0; i < result.Length; i++) { strbul.Append(result[i].ToString(flag)); } return strbul.ToString(); } // 转换为32位MD5 public static string ConvertToMD5_32(this string self) { return ConvertToMD5(self, "x2"); } // 转换为48位MD5 public static string ConvertToMD5_48(this string self) { return ConvertToMD5(self, "x3"); } // 转换为64位MD5 public static string ConvertToMD5_64(this string self) { return ConvertToMD5(self, "x4"); } } }