Barotrauma Client Doc
StringFormatter.cs
1 using System.Globalization;
2 using Microsoft.Xna.Framework;
3 using System.Linq;
4 using System;
5 using System.Collections.Generic;
6 
7 namespace Barotrauma
8 {
9  public static class StringFormatter
10  {
11  public static string Replace(this string s, string replacement, Func<char, bool> predicate)
12  {
13  var newString = new string[s.Length];
14  for (int i = 0; i < s.Length; i++)
15  {
16  char letter = s[i];
17  string newLetter = letter.ToString();
18  if (predicate(letter))
19  {
20  newLetter = replacement;
21  }
22  newString[i] = newLetter;
23  }
24  return new string(newString.SelectMany(str => str.ToCharArray()).ToArray());
25  }
26 
27  public static string Remove(this string s, string substring, StringComparison comparisonType = StringComparison.Ordinal)
28  {
29  return s.Replace(substring, string.Empty, comparisonType);
30  }
31 
32  public static string Remove(this string s, Func<char, bool> predicate)
33  {
34  return new string(s.ToCharArray().Where(c => !predicate(c)).ToArray());
35  }
36 
37  public static string RemoveWhitespace(this string s)
38  {
39  return s.Remove(c => char.IsWhiteSpace(c));
40  }
41 
42  public static string FormatSingleDecimal(this float value)
43  {
44  return value.ToString("F1", CultureInfo.InvariantCulture);
45  }
46 
47  public static string FormatDoubleDecimal(this float value)
48  {
49  return value.ToString("F2", CultureInfo.InvariantCulture);
50  }
51 
52  public static string FormatZeroDecimal(this float value)
53  {
54  return value.ToString("F0", CultureInfo.InvariantCulture);
55  }
56 
57  public static string Format(this float value, int decimalCount)
58  {
59  return value.ToString($"F{decimalCount}", CultureInfo.InvariantCulture);
60  }
61 
62  public static string FormatSingleDecimal(this Vector2 value)
63  {
64  return $"({value.X.FormatSingleDecimal()}, {value.Y.FormatSingleDecimal()})";
65  }
66 
67  public static string FormatSingleDecimal(this Vector3 value)
68  {
69  return $"({value.X.FormatSingleDecimal()}, {value.Y.FormatSingleDecimal()}, {value.Z.FormatSingleDecimal()})";
70  }
71 
72  public static string FormatSingleDecimal(this Vector4 value)
73  {
74  return $"({value.X.FormatSingleDecimal()}, {value.Y.FormatSingleDecimal()}, {value.Z.FormatSingleDecimal()}, {value.W.FormatSingleDecimal()})";
75  }
76 
77  public static string FormatDoubleDecimal(this Vector2 value)
78  {
79  return $"({value.X.FormatDoubleDecimal()}, {value.Y.FormatDoubleDecimal()})";
80  }
81 
82  public static string FormatZeroDecimal(this Vector2 value)
83  {
84  return $"({value.X.FormatZeroDecimal()}, {value.Y.FormatZeroDecimal()})";
85  }
86 
87  public static string Format(this Vector2 value, int decimalCount)
88  {
89  return $"({value.X.Format(decimalCount)}, {value.Y.Format(decimalCount)})";
90  }
91 
95  public static string CapitaliseFirstInvariant(this string s)
96  {
97  if (string.IsNullOrEmpty(s)) { return string.Empty; }
98  return s.Substring(0, 1).ToUpperInvariant() + s.Substring(1, s.Length - 1).ToLowerInvariant();
99  }
100 
104  public static string FormatCamelCaseWithSpaces(this string str)
105  {
106  return new string(InsertSpacesBeforeCaps(str).ToArray());
107  IEnumerable<char> InsertSpacesBeforeCaps(IEnumerable<char> input)
108  {
109  int i = 0;
110  int lastChar = input.Count() - 1;
111  foreach (char c in input)
112  {
113  if (char.IsUpper(c) && i > 0)
114  {
115  yield return ' ';
116  }
117 
118  yield return c;
119  i++;
120  }
121  }
122  }
123 
124  public static ICollection<string> ParseCommaSeparatedStringToCollection(string input, ICollection<string> texts = null, bool convertToLowerInvariant = true)
125  {
126  if (texts == null)
127  {
128  texts = new HashSet<string>();
129  }
130  else
131  {
132  texts.Clear();
133  }
134  if (!string.IsNullOrWhiteSpace(input))
135  {
136  foreach (string value in input.Split(','))
137  {
138  if (string.IsNullOrWhiteSpace(value)) { continue; }
139  if (convertToLowerInvariant)
140  {
141  texts.Add(value.ToLowerInvariant());
142  }
143  else
144  {
145  texts.Add(value);
146  }
147  }
148  }
149  return texts;
150  }
151 
152  public static ICollection<string> ParseSeparatedStringToCollection(string input, string[] separators, ICollection<string> texts = null, bool convertToLowerInvariant = true)
153  {
154  if (texts == null)
155  {
156  texts = new HashSet<string>();
157  }
158  else
159  {
160  texts.Clear();
161  }
162  if (!string.IsNullOrWhiteSpace(input))
163  {
164  foreach (string value in input.Split(separators, StringSplitOptions.RemoveEmptyEntries))
165  {
166  if (convertToLowerInvariant)
167  {
168  texts.Add(value.ToLowerInvariant());
169  }
170  else
171  {
172  texts.Add(value);
173  }
174  }
175  }
176  return texts;
177  }
178  }
179 }