Mega Code Archive

 
Categories / C# / Generics
 

String list and String set

#region License /* **********************************************************************************  * Copyright (c) Roman Ivantsov  * This source code is subject to terms and conditions of the MIT License  * for Irony. A copy of the license can be found in the License.txt file  * at the root of this distribution.   * By using this source code in any fashion, you are agreeing to be bound by the terms of the   * MIT License.  * You must not remove this notice from this software.  * **********************************************************************************/ #endregion using System; using System.Collections.Generic; using System.Text; namespace Irony.Parsing {   public static class Strings {     public const string AllLatinLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";     public const string DecimalDigits = "1234567890";     public const string OctalDigits = "12345670";     public const string HexDigits = "1234567890aAbBcCdDeEfF";     public const string BinaryDigits = "01";     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);     }   }//class   public class StringDictionary : Dictionary<string, string> { }   public class CharList : List<char> { }   public class CharHashSet : HashSet<char> { } //adding Hash to the name to avoid confusion with System.Runtime.Interoperability.CharSet   public class StringSet : HashSet<string> {     public StringSet() { }     public StringSet(StringComparer comparer) : base(comparer) { }     public override string ToString() {       return ToString(" ");     }     public void AddRange(params string[] items) {       base.UnionWith(items);      }     public string ToString(string separator) {       return Strings.JoinStrings(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;      }   }//class }