Jypeli 10
The simple game programming library
StringHelpers.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2using System.Text;
3
4namespace Jypeli
5{
9 public static class StringHelpers
10 {
11
18 public static bool StringEquals(object o1, object o2)
19 {
20 if ( o1 == o2 ) return true;
21
22 string s1 = null;
23 string s2 = null;
24
25 if ( o1 is string ) s1 = (string)o1;
26 else if (o1 is StringBuilder) s1 = ((StringBuilder)o1).ToString();
27 else return false;
28
29 if ( o2 is string ) s2 = (string)o2;
30 else if (o2 is StringBuilder) s2 = ((StringBuilder)o2).ToString();
31 else return false;
32
33 return s1.Equals(s2);
34 }
35
43 public static StringBuilder RemoveLast(this StringBuilder builder, int chars)
44 {
45 if ( builder.Length <= chars )
46 {
47 builder.Length = 0;
48 return builder;
49 }
50
51 builder.Length -= chars;
52 return builder;
53 }
54
62 public static void Substring( this StringBuilder src, StringBuilder dest, int start, int length )
63 {
64 for ( int i = start; i < length; i++ )
65 {
66 dest.Append(src[i]);
67 }
68 }
69
77 public static StringBuilder Substring( this StringBuilder builder, int start, int length )
78 {
79 StringBuilder result = new StringBuilder();
80 builder.Substring( start, length );
81 return result;
82 }
83
89 public static void PutTo( this StringBuilder src, StringBuilder dest )
90 {
91 dest.Append( src );
92 src.Clear();
93 }
94
102 public static void PutTo( this StringBuilder src, StringBuilder dest, int start, int length )
103 {
104 src.Substring( dest, start, length );
105 src.Remove( start, length );
106 }
107
115 public static StringBuilder PutTo( this StringBuilder builder, int start, int length )
116 {
117 StringBuilder removed = builder.Substring( start, length );
118 builder.Remove( start, length );
119 return removed;
120 }
121
128 public static int IndexForWhich( this StringBuilder builder, Predicate<char> pred )
129 {
130 for ( int i = 0; i < builder.Length; i++ )
131 {
132 if ( pred( builder[i] ) )
133 return i;
134 }
135
136 return -1;
137 }
138
145 public static int IndexOf( this StringBuilder builder, char c )
146 {
147 return builder.IndexForWhich( ch => ch == c );
148 }
149
155 public static void RemoveLeading( this StringBuilder builder, Predicate<char> pred )
156 {
157 int i = 0;
158 for ( i = 0; i < builder.Length; i++ )
159 {
160 if ( !pred( builder[i] ) )
161 break;
162 }
163
164 if (i > 0)
165 builder.Remove( 0, i );
166 }
167
173 public static void RemoveTrailing( this StringBuilder builder, Predicate<char> pred )
174 {
175 int i = 0;
176 for ( i = builder.Length - 1; i >= 0; i-- )
177 {
178 if ( !pred( builder[i] ) )
179 break;
180 }
181
182 if (i < builder.Length - 1)
183 builder.Remove( i + 1, builder.Length - i - 1 );
184 }
185
190 public static void Trim( this StringBuilder builder )
191 {
192 builder.RemoveLeading( c => Char.IsWhiteSpace( c ) );
193 builder.RemoveTrailing( c => Char.IsWhiteSpace( c ) );
194 }
195
201 public static void TakeFirstWord( this StringBuilder src, StringBuilder dest )
202 {
203 int ws = src.IndexForWhich( c => char.IsWhiteSpace( c ) );
204 if ( ws < 0 ) src.PutTo( dest );
205 else src.PutTo( dest, 0, ws + 1 );
206 }
207
214 public static string Repeat( this string s, int times )
215 {
216 StringBuilder sb = new StringBuilder();
217
218 for (int i = 0; i < times; i++)
219 sb.Append( s );
220
221 return sb.ToString();
222 }
223
230 public static string[] Append( this string s, params object[] ends )
231 {
232 string[] results = new string[ends.Length];
233
234 for ( int i = 0; i < ends.Length; i++ )
235 {
236 results[i] = s + ends[i];
237 }
238
239 return results;
240 }
241 }
242}
Sisältää avustusmetodeja merkkijonojen käsittelyyn.
static int IndexOf(this StringBuilder builder, char c)
Missä indeksissä annettu merkki sijaitsee
static void PutTo(this StringBuilder src, StringBuilder dest)
Poistaa koko StringBuilderin sisällön ja kirjoittaa sen toiseen StringBuilderiin.
static StringBuilder PutTo(this StringBuilder builder, int start, int length)
Poistaa osamerkkijonon ja palauttaa sen toisena StringBuilderina..
static string[] Append(this string s, params object[] ends)
Lisää merkkijonon jokaisen merkkijonotaulukon alkion alkuun
static StringBuilder RemoveLast(this StringBuilder builder, int chars)
Poistaa merkkijonon lopusta tietyn määrän merkkejä. Jos merkkijono on lyhyempi kuin poistettava määrä...
static void PutTo(this StringBuilder src, StringBuilder dest, int start, int length)
Poistaa osamerkkijonon ja kirjoittaa sen toiseen StringBuilderiin.
static bool StringEquals(object o1, object o2)
Vertaa kahta oliota, jotka ovat joko merkkijonoja tai StringBuildereita, merkki kerrallaan.
static void Substring(this StringBuilder src, StringBuilder dest, int start, int length)
Kirjoittaa osamerkkijonon toiseen StringBuilderiin.
static int IndexForWhich(this StringBuilder builder, Predicate< char > pred)
StringBuilderin indeksi jossa annettu funktio on ensimmäisen kerran tosi.
static StringBuilder Substring(this StringBuilder builder, int start, int length)
Palauttaa osamerkkijonon toisena StringBuilderina.
static string Repeat(this string s, int times)
Toistaa merkkijonon annetun määrän verran.
static void RemoveLeading(this StringBuilder builder, Predicate< char > pred)
Poistaa kaiken joka tulee ennen ehdon toteutumista
static void RemoveTrailing(this StringBuilder builder, Predicate< char > pred)
Poistaa kaiken joka tulee ehdon toteutumisen jälkeen
static void Trim(this StringBuilder builder)
Poistaa tyhjät merkit alusta ja lopusta
static void TakeFirstWord(this StringBuilder src, StringBuilder dest)
Ottaa ensimmäisen sanan ja lisää sen toiseen StringBuilderiin