/// <summary> /// Formats PascalCase (upper CamelCase) and (lower) camelCase words to a friendly format separated by the given delimiter (space by default). /// </summary> /// <param name="input">CamelCase input to format</param> /// <param name="delimiter">Delimiter to use for formatting (space by default)</param> /// <param name="capitalizeFirstCharacter">Capitalize the first character for (lower) camelCase words (false by default)</param> public static string FormatCamelCase(string input, string delimiter = " ", CamelCaseOptions camelCaseOptions = CamelCaseOptions.None) { if (String.IsNullOrEmpty(delimiter)) { throw new ArgumentException("Delimiter can't be null or empty", "delimiter"); } string result; if (camelCaseOptions.HasFlag(CamelCaseOptions.CapitalizeFirstCharacter) || camelCaseOptions.HasFlag(CamelCaseOptions.CapitalizeFirstCharacterInvariantCulture)) { result = _formatCamelCaseCapitalizeRegex.Replace(input, m => EvaluateCamelCaseMatchWithCapitalization(m, delimiter, camelCaseOptions)); } else { var replacement = delimiter + "$1"; result = _formatCamelCaseRegex.Replace(input, replacement); } return result; }
/// <summary> /// Formats PascalCase (upper CamelCase) and (lower) camelCase words to a friendly format separated by the given delimiter (space by default). /// </summary> /// <param name="input">CamelCase input to format</param> /// <param name="delimiter">Delimiter to use for formatting (space by default)</param> /// <param name="capitalizeFirstCharacter">Capitalize the first character for (lower) camelCase words (false by default)</param> public static string FormatCamelCase(string input, string delimiter = " ", CamelCaseOptions camelCaseOptions = CamelCaseOptions.None) { if (String.IsNullOrEmpty(delimiter)) { throw new ArgumentException("Delimiter can't be null or empty", "delimiter"); } string result; if (camelCaseOptions.HasFlag(CamelCaseOptions.CapitalizeFirstCharacter) || camelCaseOptions.HasFlag(CamelCaseOptions.CapitalizeFirstCharacterInvariantCulture)) { result = _formatCamelCaseCapitalizeRegex.Replace(input, m => EvaluateCamelCaseMatchWithCapitalization(m, delimiter, camelCaseOptions)); } else { var replacement = delimiter + "$1"; result = _formatCamelCaseRegex.Replace(input, replacement); } return(result); }
private static string EvaluateCamelCaseMatchWithCapitalization(Match m, string delimiter, CamelCaseOptions options) { string result; if (m.Groups["LowerCaseChar"].Value != String.Empty) { if (options.HasFlag(CamelCaseOptions.CapitalizeFirstCharacterInvariantCulture)) { result = m.Groups["LowerCaseChar"].Value.ToUpperInvariant(); } else { result = m.Groups["LowerCaseChar"].Value.ToUpper(); } } else { result = delimiter + m.Groups[1].Value; } return(result); }
private static string EvaluateCamelCaseMatchWithCapitalization(Match m, string delimiter, CamelCaseOptions options) { string result; if (m.Groups["LowerCaseChar"].Value != String.Empty) { if (options.HasFlag(CamelCaseOptions.CapitalizeFirstCharacterInvariantCulture)) { result = m.Groups["LowerCaseChar"].Value.ToUpperInvariant(); } else { result = m.Groups["LowerCaseChar"].Value.ToUpper(); } } else { result = delimiter + m.Groups[1].Value; } return result; }