Exemple #1
0
        public string Replace(ReplacementState state)
        {
            if (StringToCase.Length == 0)
            {
                return(StringToCase);
            }

            string caseTemplate = state.Match.Groups[CaseTemplateGroupName].Value;

            if (caseTemplate.Length == StringToCase.Length)
            {
                return(OneToOneCase(caseTemplate));
            }
            else if (caseTemplate.Length == 0)
            {
                return(StringToCase);
            }
            else if (caseTemplate.Length == 1)
            {
                if (char.IsUpper(caseTemplate[0]))
                {
                    return(StringToCase.ToUpper());
                }
                else
                {
                    return(StringToCase.ToLower());
                }
            }
            else
            {
                return(BestGuessCase(caseTemplate));
            }
        }
Exemple #2
0
        protected string BestGuessCase(string caseTemplate)
        {
            Debug.Assert(caseTemplate.Length > 1);
            Debug.Assert(StringToCase.Length > 0);

            bool firstUpper  = char.IsUpper(caseTemplate[0]);
            bool firstLower  = char.IsLower(caseTemplate[0]);
            bool secondUpper = char.IsUpper(caseTemplate[1]);
            bool secondLower = char.IsLower(caseTemplate[1]);

            if (firstUpper && secondUpper)
            {
                // AA
                return(StringToCase.ToUpper());
            }
            else if (firstUpper && secondLower)
            {
                // Aa
                return(char.ToUpper(StringToCase[0]) + StringToCase.Substring(1).ToLower());
            }
            else if (firstLower && secondUpper)
            {
                // aA
                return(char.ToLower(StringToCase[0]) + StringToCase.Substring(1).ToUpper());
            }
            else if (firstLower && secondLower)
            {
                // aa
                return(StringToCase.ToLower());
            }
            else
            {
                // 0a, 0A, a0, A0
                return(StringToCase);
            }
        }