private static string fixAtom(int ordinal, string atom, ChangeCaseTypes newCase, bool useStrictSuffixConformity)
        {
            if (ordinal < 0)
            {
                throw new IndexOutOfRangeException("ordinal must be >= 0");
            }
            switch (newCase)
            {
            case ChangeCaseTypes.PascalCase:
                var s = atom.Pascalize();
                if (s.EndsWith(value: "ID", comparisonType: StringComparison.Ordinal))
                {
                    s = s.Substring(0, atom.LastIndexOf("ID", StringComparison.Ordinal)) + "Id";
                }
                return(s);               // PascalCase(atom, useStrictSuffixConformity);

            case ChangeCaseTypes.lowercase:
                return(atom.ToLower());

            case ChangeCaseTypes.unchanged:
                return(atom);

            case ChangeCaseTypes.UPPERCASE:
                return(atom.ToUpper());

            case ChangeCaseTypes.camelCase:
                return(atom.Camelize());

            //return (useStrictSuffixConformity ?
            //    (ordinal < 1 ? atom.ToLower() : PascalCase(atom, useStrictSuffixConformity)) :
            //    (ordinal < 1 ? atom.Substring(0, 1).ToLower() + atom.Substring(1) : PascalCase(atom, useStrictSuffixConformity)));
            default:
                return(atom);
            }
        }
 public static string Collapse(this string originalString, ChangeCaseTypes newCase, string delimiterCharacters)
 {
     if (string.IsNullOrEmpty(originalString))
     {
         return(originalString);
     }
     return(Collapse(originalString, newCase, false, delimiterCharacters.ToCharArray()));
 }
        public static string Collapse(this string originalString, ChangeCaseTypes newCase, bool useStrictSuffixConformity, params char[] delimiterChars)
        {
            if (string.IsNullOrEmpty(originalString))
            {
                return(originalString);
            }
            string[] temp  = originalString.Split(delimiterChars);
            string   atoms = "";

            for (int i = 0; i < temp.Length; i++)
            {
                string s = temp[i];
                atoms += fixAtom(i, s, newCase, false);
            }
            return(atoms);
        }