namespace TestNamespace {
public static class Strings {
public static string JoinStrings(string separator, IEnumerable<string> values) {
StringList list = new StringList();
list.AddRange(values);
string[] arr = new string[list.Count];
list.CopyTo(arr, 0);
return string.Join(separator, arr);
}
}
public class StringDictionary : Dictionary<string, string> { }
public class CharList : List<char> { }
public class StringSet : HashSet<string> {
public override string ToString() {
return ToString(" ");
}
public string ToString(string separator) => Strings.JoinSt<<:caret:>>rings(separator, this);
}
public class StringList : List<string> {
public StringList() { }
public StringList(params string[] args) {
AddRange(args);
}
public override string ToString() {
return ToString(" ");
}
public string ToString(string separator) {
return Strings.JoinStrings(separator, this);
}
//Used in sorting suffixes and prefixes; longer strings must come first in sort order
public static int LongerFirst(string x, string y) {
try {//in case any of them is null
if (x.Length > y.Length) return -1;
} catch { }
if (x == y) return 0;
return 1;
}
}
}