using System.Diagnostics.CodeAnalysis; using System.Text; using System.Text.RegularExpressions; namespace System { /// /// 字符串扩展方法 /// public static class StringExtension { /// /// 判断字符串是否为 Null 或空字符串 /// /// 当前字符串 /// 如果字符串为 Null 或空字符串,则返回 true;否则返回 false. public static bool IsNullOrEmpty(this string? @this) => string.IsNullOrEmpty(@this); /// /// 判断字符串是否为 Null 或白字符串 /// /// 当前字符串 /// 如果字符串为 Null 或由空白字符组成,则返回 true;否则返回 false. /// 例如" "此时返回True public static bool IsNullOrWhiteSpace(this string? @this) => string.IsNullOrWhiteSpace(@this); /// /// 判断字符串是否符合指定模式 /// /// 当前字符串 /// 要使用的模式.使用"*"作为通配符字符串. /// 如果字符串符合指定模式,则返回true; 否则返回false public static bool IsLike([NotNull] this string @this, string pattern) { // 将模式转换为正则表达式,并使用 ^$ 匹配整个字符串 var regexPattern = "^" + Regex.Escape(pattern) + "$"; // 转义特殊字符 ?、#、*、[] 和 [!] regexPattern = regexPattern.Replace(@"\[!", "[^") .Replace(@"\[", "[") .Replace(@"\]", "]") .Replace(@"\?", ".") .Replace(@"\*", ".*") .Replace(@"\#", @"\d"); // 判断字符串是否符合正则表达式规则 return Regex.IsMatch(@this, regexPattern); } /// /// 重复指定的字符串指定次数 /// /// 当前字符串 /// 重复次数 /// 重复指定次数后的字符串 public static string Repeat([NotNull] this string @this, int repeatCount) { if (@this.Length == 1) { return new string(@this[0], repeatCount); } var sb = new StringBuilder(repeatCount * @this.Length); while (repeatCount-- > 0) { sb.Append(@this); } return sb.ToString(); } /// /// 反转给定字符串 /// /// 当前字符串 /// 反转后的字符串 public static string Reverse([NotNull] this string @this) { if (@this.Length <= 1) { return @this; } var chars = @this.ToCharArray(); Array.Reverse(chars); return new string(chars); } /// /// 返回使用指定编码的字符串所表示的字节数组 /// /// 要转换的字符串 /// 要使用的编码 /// 包含字符串中字符所表示的字节的数组 public static byte[] GetBytes([NotNull] this string str, Encoding encoding) => encoding.GetBytes(str); /// /// 判断两个字符串是否相等,忽略大小写. /// /// 字符串1 /// 字符串2 /// 如果两个字符串相等(忽略大小写),则返回 true;否则返回 false. public static bool EqualsIgnoreCase(this string s1, string s2) => string.Equals(s1, s2, StringComparison.OrdinalIgnoreCase); /// /// 将字符串转换为长整型数值. /// /// 要转换的字符串 /// 如果转换成功,返回转换后的长整型数值;否则返回 null. public static int? ToInt(this string @this) { bool status = int.TryParse(@this, out int result); if (status) return result; else return null; } /// /// 将字符串转换为长整型数值. /// /// 要转换的字符串 /// 如果转换成功,返回转换后的长整型数值;否则返回 null. public static long? ToLong(this string @this) { bool status = long.TryParse(@this, out long result); if (status) return result; else return null; } /// /// 驼峰转下划线命名 /// /// /// public static string ToUnderline(string humpString) { return Regex.Replace(humpString, "([A-Z])", "_$1").ToLower().TrimStart('_'); } } }