using System.Text; using JNPF.DependencyInjection; namespace JNPF.Common.Extension; /// /// StringBuilder 扩展方法类. /// [SuppressSniffer] public static class StringBuilderExtensions { /// /// 去除开头的空格. /// /// StringBuilder. /// 返回修改后的StringBuilder,主要用于链式操作. public static StringBuilder TrimStart(this StringBuilder sb) { return sb.TrimStart(' '); } /// /// 去除开头的指定. /// /// StringBuilder. /// 要去掉的. /// public static StringBuilder TrimStart(this StringBuilder sb, char c) { if (sb.Length == 0) return sb; while (c.Equals(sb[0])) { sb.Remove(0, 1); } return sb; } /// /// 去除开头的指定字符数组. /// /// StringBuilder. /// 要去掉的字符数组. /// public static StringBuilder TrimStart(this StringBuilder sb, char[] cs) { return sb.TrimStart(new string(cs)); } /// /// 去除开头的指定的. /// /// StringBuilder. /// 要去掉的. /// public static StringBuilder TrimStart(this StringBuilder sb, string str) { if (string.IsNullOrEmpty(str) || sb.Length == 0 || str.Length > sb.Length) return sb; while (sb.SubString(0, str.Length).Equals(str)) { sb.Remove(0, str.Length); if (str.Length > sb.Length) { break; } } return sb; } /// /// 去除StringBuilder结尾的空格. /// /// StringBuilder. /// 返回修改后的StringBuilder,主要用于链式操作. public static StringBuilder TrimEnd(this StringBuilder sb) { return sb.TrimEnd(' '); } /// /// 去除结尾指定字符. /// /// StringBuilder. /// 要去掉的字符. /// public static StringBuilder TrimEnd(this StringBuilder sb, char c) { if (sb.Length == 0) return sb; while (c.Equals(sb[sb.Length - 1])) { sb.Remove(sb.Length - 1, 1); } return sb; } /// /// 去除结尾指定字符数组. /// /// StringBuilder. /// 要去除的字符数组. /// public static StringBuilder TrimEnd(this StringBuilder sb, char[] chars) { return sb.TrimEnd(new string(chars)); } /// /// 去除结尾指定字符串. /// /// StringBuilder. /// 要去除的字符串. /// public static StringBuilder TrimEnd(this StringBuilder sb, string str) { if (string.IsNullOrEmpty(str) || sb.Length == 0 || str.Length > sb.Length) return sb; while (sb.SubString(sb.Length - str.Length, str.Length).Equals(str)) { sb.Remove(sb.Length - str.Length, str.Length); if (sb.Length < str.Length) { break; } } return sb; } /// /// 去除StringBuilder两端的空格. /// /// StringBuilder. /// 返回修改后的StringBuilder,主要用于链式操作. public static StringBuilder Trim(this StringBuilder sb) { if (sb.Length == 0) return sb; return sb.TrimEnd().TrimStart(); } /// /// 返回从起始位置指定长度的字符串. /// /// StringBuilder. /// 起始位置. /// 长度. /// 字符串. /// 超出字符串索引长度异常. public static string SubString(this StringBuilder sb, int start, int length) { if (start + length > sb.Length) throw new IndexOutOfRangeException("超出字符串索引长度"); char[] cs = new char[length]; for (int i = 0; i < length; i++) { cs[i] = sb[start + i]; } return new string(cs); } }