Ejemplo n.º 1
0
        private string FinishFixingName(string name)
        {
            // Edge case: prefix "as", suffix "sa", name "asa"
            if (Suffix.Length + Prefix.Length >= name.Length)
            {
                return(name);
            }

            name = name.Substring(Prefix.Length, name.Length - Suffix.Length - Prefix.Length);
            IEnumerable <string> words = new[] { name };

            if (!string.IsNullOrEmpty(WordSeparator))
            {
                words = name.Split(new[] { WordSeparator }, StringSplitOptions.RemoveEmptyEntries);

                if (words.Count() == 1) // Only Split if words have not been split before
                {
                    bool     isWord   = true;
                    var      parts    = StringBreaker.GetParts(name, isWord);
                    string[] newWords = new string[parts.Count];
                    for (int i = 0; i < parts.Count; i++)
                    {
                        newWords[i] = name.Substring(parts[i].Start, parts[i].End - parts[i].Start);
                    }
                    words = newWords;
                }
            }

            words = ApplyCapitalization(words);

            return(Prefix + string.Join(WordSeparator, words) + Suffix);
        }