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