/// <summary> /// Converts a string to PascalCase.. /// </summary> /// <param name="text">The text to convert.</param> /// <param name="keepUnderscore">if set to <c>true</c> keep underscore in this name.</param> /// <returns></returns> public string ConvertToPascalCase(string text, NamingFlags namingFlags) { string[] splittedPhrase = text.Split('_'); var sb = new StringBuilder(); for (int i = 0; i < splittedPhrase.Length; i++) { string subPart = splittedPhrase[i]; // Don't perform expansion when asked if ((namingFlags & NamingFlags.NoShortNameExpand) == 0) { while (subPart.Length > 0) { bool continueReplace = false; foreach (var regExp in _expandShortName) { var regex = regExp.Regex; var newText = regExp.Replace; if (regex.Match(subPart).Success) { if (regExp.HasRegexReplace) { subPart = regex.Replace(subPart, regExp.Replace); sb.Append(subPart); subPart = string.Empty; } else { subPart = regex.Replace(subPart, string.Empty); sb.Append(newText); continueReplace = true; } break; } } if (!continueReplace) { break; } } } // Else, perform a standard convertion if (subPart.Length > 0) { int numberOfCharLowercase; // If string is not Pascal Case, then Pascal Case it if (IsPascalCase(subPart, out numberOfCharLowercase)) { sb.Append(subPart); } else { char[] splittedPhraseChars = (numberOfCharLowercase > 0) ? subPart.ToCharArray() : subPart.ToLower().ToCharArray(); if (splittedPhraseChars.Length > 0) splittedPhraseChars[0] = char.ToUpper(splittedPhraseChars[0]); sb.Append(new String(splittedPhraseChars)); } } if ( (namingFlags & NamingFlags.KeepUnderscore) != 0 && (i + 1) < splittedPhrase.Length) sb.Append("_"); } return sb.ToString(); }
/// <summary> /// Converts a string to PascalCase.. /// </summary> /// <param name="text">The text to convert.</param> /// <param name="keepUnderscore">if set to <c>true</c> keep underscore in this name.</param> /// <returns></returns> public string ConvertToPascalCase(string text, NamingFlags namingFlags) { string[] splittedPhrase = text.Split('_'); var sb = new StringBuilder(); for (int i = 0; i < splittedPhrase.Length; i++) { string subPart = splittedPhrase[i]; // Don't perform expansion when asked if ((namingFlags & NamingFlags.NoShortNameExpand) == 0) { while (subPart.Length > 0) { bool continueReplace = false; foreach (var regExp in _expandShortName) { var regex = regExp.Regex; var newText = regExp.Replace; if (regex.Match(subPart).Success) { if (regExp.HasRegexReplace) { subPart = regex.Replace(subPart, regExp.Replace); sb.Append(subPart); subPart = string.Empty; } else { subPart = regex.Replace(subPart, string.Empty); sb.Append(newText); continueReplace = true; } break; } } if (!continueReplace) { break; } } } // Else, perform a standard convertion if (subPart.Length > 0) { int numberOfCharLowercase; // If string is not Pascal Case, then Pascal Case it if (IsPascalCase(subPart, out numberOfCharLowercase)) { sb.Append(subPart); } else { char[] splittedPhraseChars = (numberOfCharLowercase > 0) ? subPart.ToCharArray() : subPart.ToLower().ToCharArray(); if (splittedPhraseChars.Length > 0) { splittedPhraseChars[0] = char.ToUpper(splittedPhraseChars[0]); } sb.Append(new String(splittedPhraseChars)); } } if ((namingFlags & NamingFlags.KeepUnderscore) != 0 && (i + 1) < splittedPhrase.Length) { sb.Append("_"); } } return(sb.ToString()); }