using System; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; namespace SK.Framework { public static class StringExtension { /// /// 计算目标字符在字符串中出现的次数 不区分大小写 /// /// 字符串 /// 目标字符 /// 次数 public static int Count(this string self, char target) { char[] charArray = self.ToCharArray(); string targetStr = target.ToString().ToLower(); int retV = 0; for (int i = 0; i < charArray.Length; i++) { if(targetStr == charArray[i].ToString().ToLower()) { retV++; } } return retV; } /// /// 字符串拼接 /// /// 字符串 /// 被拼接的字符串 /// 拼接后的字符串 public static string Concat(this string self, params string[] strs) { StringBuilder sb = new StringBuilder(); sb.Append(self); for (int i = 0; i < strs.Length; i++) { sb.Append(strs[i]); } return sb.ToString(); } /// /// 字符串拼接 /// /// 字符串 /// 被拼接的字符串列表 /// 拼接后的字符串 public static string Concat(this string self, List strs) { StringBuilder sb = new StringBuilder(); sb.Append(self); for (int i = 0; i < strs.Count; i++) { sb.Append(strs[i]); } return sb.ToString(); } /// /// 尝试转化为int /// /// 字符串 /// 转化结果 public static int TryToInt(this string self) { return int.TryParse(self, out int retValue) ? retValue : int.MinValue; } /// /// 尝试转化为float /// /// 字符串 /// 转化结果 public static float ToFloat(this string self) { return float.TryParse(self, out float retValue) ? retValue : float.MinValue; } /// /// 尝试转化为枚举 /// /// 枚举类型 /// 字符串 /// 转化结果 public static T ToEnum(this string self) { try { return (T)Enum.Parse(typeof(T), self); } catch { return default; } } /// /// 尝试转化为枚举 /// /// 枚举类型 /// 字符串 /// 是否忽略大小写 /// 转化结果 public static T ToEnum(this string self, bool ignoreCase) { try { return (T)Enum.Parse(typeof(T), self, ignoreCase); } catch { return default; } } /// /// 大写字符串首字符 /// /// 字符串 /// 字符串 public static string UppercaseFirst(this string self) { return char.ToUpper(self[0]) + self.Substring(1); } /// /// 小写字符串首字符 /// /// /// public static string LowercaseFirst(this string self) { return char.ToLower(self[0]) + self.Substring(1); } /// /// 判断字符串是否为Null或Empty /// /// 字符串 /// 是否为Null或Empty public static bool IsNullOrEmpty(this string self) { return string.IsNullOrEmpty(self); } /// /// 判断字符串是否为Null或WhiteSpace /// /// 字符串 /// 是否为Null或WhiteSpace public static bool IsNullOrWhiteSpace(this string self) { return string.IsNullOrWhiteSpace(self); } /// /// 判断文件是否存在 /// /// 文件路径 /// 是否存在 public static bool FileExists(this string self) { return File.Exists(self); } /// /// 根据路径删除文件 /// /// 文件路径 /// 删除结果 public static bool DeleteFile(this string self) { if (File.Exists(self)) { File.Delete(self); return true; } return false; } /// /// 判断文件夹是否存在 /// /// 文件夹路径 /// 是否存在 public static bool DirectoryExists(this string self) { return Directory.Exists(self); } /// /// 根据路径创建文件夹 /// /// 文件夹路径 /// 文件夹路径 public static string CreateDirectory(this string self) { if (!Directory.Exists(self)) { Directory.CreateDirectory(self); } return self; } /// /// 根据路径删除文件夹 /// /// 文件夹路径 /// 删除结果 public static bool DeleteDirectory(this string self) { if (Directory.Exists(self)) { Directory.Delete(self); return true; } return false; } /// /// 合并路径 /// /// 路径 /// 被合并的路径 /// 合并后的路径 public static string PathCombine(this string self, string beCombined) { return Path.Combine(self, beCombined); } /// /// 转化为base64字符串 /// /// 字符串 /// base64字符串 public static string ToBase64String(this string self) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(self)); } /// /// 判断字符串是否包含中文 /// /// 字符串 /// 若字符串包含中文返回true,否则返回false public static bool IsContainChinese(this string self) { return Regex.IsMatch(self, @"[\u4e00-\u9fa5]"); } /// /// 判断字符串是否为16进制数据 /// /// 字符串 /// 若字符串符合16进制数据格式返回true,否则返回false public static bool IsMatchHexadecimal(this string self) { return Regex.IsMatch(self, @"/^#?([a-f0-9]{6}|[a-f0-9]{3})$/"); } /// /// 判断字符串是否为url /// /// 字符串 /// 若字符串符合url地址格式返回true,否则返回false public static bool IsMatchURL(this string self) { return Regex.IsMatch(self, @"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/"); } /// /// 判断字符串是否为IP地址 /// /// 字符串 /// 若字符串符合IP地址格式返回true,否则返回false public static bool IsMatchIPAddress(this string self) { return Regex.IsMatch(self, @"/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"); } /// /// 判断字符串是否为Email邮箱 /// /// 字符串 /// 若字符串符合Email邮箱格式返回true,否则返回false public static bool IsMatchEmail(this string self) { return Regex.IsMatch(self, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } /// /// 判断字符串是否为手机号码 /// /// 字符串 /// 若字符串符合手机号码格式返回true,否则返回false public static bool IsMatchMobilePhoneNumber(this string self) { return Regex.IsMatch(self, @"^0{0,1}(13[4-9]|15[7-9]|15[0-2]|18[7-8])[0-9]{8}$"); } } }