BadScript 2
Loading...
Searching...
No Matches
StringBuilderExtensions.cs
Go to the documentation of this file.
1// Copyright 2005-2015 Giacomo Stelluti Scala & Contributors. All rights reserved. See License.md in the project root for license information.
2
3using System;
4using System.Text;
5
7{
8 internal static class StringBuilderExtensions
9 {
10 public static StringBuilder AppendWhen(this StringBuilder builder, bool condition, params string[] values)
11 {
12 if (condition)
13 {
14 foreach (string value in values)
15 {
16 builder.Append(value);
17 }
18 }
19
20 return builder;
21 }
22
23 public static StringBuilder AppendWhen(this StringBuilder builder, bool condition, params char[] values)
24 {
25 if (condition)
26 {
27 foreach (char value in values)
28 {
29 builder.Append(value);
30 }
31 }
32
33 return builder;
34 }
35
36 public static StringBuilder AppendFormatWhen(this StringBuilder builder,
37 bool condition,
38 string format,
39 params object[] args)
40 {
41 return condition
42 ? builder.AppendFormat(format, args)
43 : builder;
44 }
45
46 public static StringBuilder AppendIf(this StringBuilder builder, bool condition, string ifTrue, string ifFalse)
47 {
48 return condition
49 ? builder.Append(ifTrue)
50 : builder.Append(ifFalse);
51 }
52
53 public static StringBuilder BimapIf(this StringBuilder builder,
54 bool condition,
55 Func<StringBuilder, StringBuilder> ifTrue,
56 Func<StringBuilder, StringBuilder> ifFalse)
57 {
58 return condition
59 ? ifTrue(builder)
60 : ifFalse(builder);
61 }
62
63 public static StringBuilder MapIf(this StringBuilder builder,
64 bool condition,
65 Func<StringBuilder, StringBuilder> ifTrue)
66 {
67 return condition
68 ? ifTrue(builder)
69 : builder;
70 }
71
72 public static StringBuilder AppendIfNotEmpty(this StringBuilder builder, params string[] values)
73 {
74 foreach (string value in values)
75 {
76 if (value.Length > 0)
77 {
78 builder.Append(value);
79 }
80 }
81
82 return builder;
83 }
84
85 public static string SafeToString(this StringBuilder builder)
86 {
87 return builder == null
88 ? string.Empty
89 : builder.ToString();
90 }
91
92 public static int SafeLength(this StringBuilder builder)
93 {
94 return builder == null ? 0 : builder.Length;
95 }
96
97 public static StringBuilder TrimEnd(this StringBuilder builder, char c)
98 {
99 return builder.Length > 0
100 ? builder.Remove(builder.Length - 1, 1)
101 : builder;
102 }
103
104 public static StringBuilder TrimEndIfMatch(this StringBuilder builder, char c)
105 {
106 if (builder.Length > 0)
107 {
108 if (builder[builder.Length - 1] == c)
109 {
110 builder.Remove(builder.Length - 1, 1);
111 }
112 }
113
114 return builder;
115 }
116
117 public static StringBuilder TrimEndIfMatchWhen(this StringBuilder builder, bool condition, char c)
118 {
119 return condition
120 ? builder.TrimEndIfMatch(c)
121 : builder;
122 }
123
124 public static int TrailingSpaces(this StringBuilder builder)
125 {
126 int bound = builder.Length - 1;
127
128 if (builder.Length == 0)
129 {
130 return 0;
131 }
132
133 if (builder[bound] != ' ')
134 {
135 return 0;
136 }
137
138 int c = 0;
139
140 for (int i = bound; i <= bound; i--)
141 {
142 if (i < 0)
143 {
144 break;
145 }
146
147 if (builder[i] != ' ')
148 {
149 break;
150 }
151
152 c++;
153 }
154
155 return c;
156 }
157
166 public static bool SafeStartsWith(this StringBuilder builder, string s)
167 {
168 if (string.IsNullOrEmpty(s))
169 {
170 return false;
171 }
172
173 return builder?.Length >= s.Length && builder.ToString(0, s.Length) == s;
174 }
175
184 public static bool SafeEndsWith(this StringBuilder builder, string s)
185 {
186 if (string.IsNullOrEmpty(s))
187 {
188 return false;
189 }
190
191 return builder?.Length >= s.Length && builder.ToString(builder.Length - s.Length, s.Length) == s;
192 }
193 }
194}
static StringBuilder AppendIf(this StringBuilder builder, bool condition, string ifTrue, string ifFalse)
static StringBuilder TrimEndIfMatchWhen(this StringBuilder builder, bool condition, char c)
static StringBuilder TrimEnd(this StringBuilder builder, char c)
static StringBuilder AppendWhen(this StringBuilder builder, bool condition, params string[] values)
static StringBuilder TrimEndIfMatch(this StringBuilder builder, char c)
static StringBuilder BimapIf(this StringBuilder builder, bool condition, Func< StringBuilder, StringBuilder > ifTrue, Func< StringBuilder, StringBuilder > ifFalse)
static StringBuilder AppendWhen(this StringBuilder builder, bool condition, params char[] values)
static int TrailingSpaces(this StringBuilder builder)
static string SafeToString(this StringBuilder builder)
static int SafeLength(this StringBuilder builder)
static bool SafeEndsWith(this StringBuilder builder, string s)
Indicates whether the string value of a System.Text.StringBuilder ends with the input System....
static bool SafeStartsWith(this StringBuilder builder, string s)
Indicates whether the string value of a System.Text.StringBuilder starts with the input System....
static StringBuilder MapIf(this StringBuilder builder, bool condition, Func< StringBuilder, StringBuilder > ifTrue)
static StringBuilder AppendFormatWhen(this StringBuilder builder, bool condition, string format, params object[] args)
static StringBuilder AppendIfNotEmpty(this StringBuilder builder, params string[] values)