StringBuilderExtensions.cs
5.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
using NCC.Dependency;
using System;
using System.Text;
namespace NCC.Common.Extension
{
/// <summary>
/// StringBuilder 扩展方法类
/// </summary>
[SuppressSniffer]
public static class StringBuilderExtensions
{
/// <summary>
/// 去除<seealso cref="StringBuilder"/>开头的空格
/// </summary>
/// <param name="sb">StringBuilder</param>
/// <returns>返回修改后的StringBuilder,主要用于链式操作</returns>
public static StringBuilder TrimStart(this StringBuilder sb)
{
return sb.TrimStart(' ');
}
/// <summary>
/// 去除<seealso cref="StringBuilder"/>开头的指定<seealso cref="char"/>
/// </summary>
/// <param name="sb"></param>
/// <param name="c">要去掉的<seealso cref="char"/></param>
/// <returns></returns>
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;
}
/// <summary>
/// 去除<seealso cref="StringBuilder"/>开头的指定字符数组
/// </summary>
/// <param name="sb"></param>
/// <param name="cs">要去掉的字符数组</param>
/// <returns></returns>
public static StringBuilder TrimStart(this StringBuilder sb, char[] cs)
{
return sb.TrimStart(new string(cs));
}
/// <summary>
/// 去除<see cref="StringBuilder"/>开头的指定的<seealso cref="string"/>
/// </summary>
/// <param name="sb"></param>
/// <param name="str">要去掉的<seealso cref="string"/></param>
/// <returns></returns>
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;
}
/// <summary>
/// 去除StringBuilder结尾的空格
/// </summary>
/// <param name="sb">StringBuilder</param>
/// <returns>返回修改后的StringBuilder,主要用于链式操作</returns>
public static StringBuilder TrimEnd(this StringBuilder sb)
{
return sb.TrimEnd(' ');
}
/// <summary>
/// 去除<see cref="StringBuilder"/>结尾指定字符
/// </summary>
/// <param name="sb"></param>
/// <param name="c">要去掉的字符</param>
/// <returns></returns>
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;
}
/// <summary>
/// 去除<see cref="StringBuilder"/>结尾指定字符数组
/// </summary>
/// <param name="sb"></param>
/// <param name="chars">要去除的字符数组</param>
/// <returns></returns>
public static StringBuilder TrimEnd(this StringBuilder sb, char[] chars)
{
return sb.TrimEnd(new string(chars));
}
/// <summary>
/// 去除<see cref="StringBuilder"/>结尾指定字符串
/// </summary>
/// <param name="sb"></param>
/// <param name="str">要去除的字符串</param>
/// <returns></returns>
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;
}
/// <summary>
/// 去除StringBuilder两端的空格
/// </summary>
/// <param name="sb">StringBuilder</param>
/// <returns>返回修改后的StringBuilder,主要用于链式操作</returns>
public static StringBuilder Trim(this StringBuilder sb)
{
if (sb.Length == 0)
return sb;
return sb.TrimEnd().TrimStart();
}
/// <summary>
/// 返回<see cref="StringBuilder"/>从起始位置指定长度的字符串
/// </summary>
/// <param name="sb"></param>
/// <param name="start">起始位置</param>
/// <param name="length">长度</param>
/// <returns>字符串</returns>
/// <exception cref="OverflowException">超出字符串索引长度异常</exception>
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);
}
}
}