/// <summary> /// The Function which does all the heavy lifting. /// </summary> /// <param name="format">A composite format string</param> /// <param name="flags">The flags which specify how the <paramref name="format" /> string should be interpreted.</param> /// <param name="arguments">The arguments to format the <paramref name="format" /> parameter with.</param> /// <returns>System.String.</returns> public static string FormatString(string format, FormatTokenFlags flags, params object[] arguments) { switch (flags) { case FormatTokenFlags.IndexToken: return(string.Format(format, arguments)); case FormatTokenFlags.SpecifierToken: var stringBuilder = new StringBuilder(); for (int i = 0, argIndex = 0; i < format.Length; i++) { stringBuilder.Append(format[i] == '%' && argIndex < arguments.Length ? "{" + argIndex++ + "}" : format.Substring(i, 1)); } return(string.Format(stringBuilder.ToString(), arguments)); case FormatTokenFlags.MemberToken: return (string.Format( _regexReformatter(name => name == "0" ? arguments[0] : DataBinder.Eval(arguments[0], name), format, arguments), arguments)); default: return(format); } }
/// <summary> /// The Function which does all the heavy lifting. /// </summary> /// <param name="format">A composite format string</param> /// <param name="flags">The flags which specify how the <paramref name="format" /> string should be interpreted.</param> /// <param name="arguments">The arguments to format the <paramref name="format" /> parameter with.</param> /// <returns>System.String.</returns> public static string FormatString(string format, FormatTokenFlags flags, params object[] arguments) { switch (flags) { case FormatTokenFlags.IndexToken: return string.Format(format, arguments); case FormatTokenFlags.SpecifierToken: var stringBuilder = new StringBuilder(); for (int i = 0, argIndex = 0; i < format.Length; i++) { stringBuilder.Append(format[i] == '%' && argIndex < arguments.Length ? "{" + argIndex++ + "}" : format.Substring(i, 1)); } return string.Format(stringBuilder.ToString(), arguments); case FormatTokenFlags.MemberToken: return string.Format(_regexReformatter(name => (name == "0") ? arguments[0] : DataBinder.Eval(arguments[0], name), format, arguments), arguments); default: return format; } }