private static string formatNum(string svalue, FieldFormatOptions options, StringBuilder errors) { StringBuilder s = new StringBuilder(); foreach (char c in svalue) { if (char.IsDigit(c)) { s.Append(c); } } return(s.ToString()); }
private static string applyFixedLength(string svalue, FieldFormatOptions options, StringBuilder errors) { if (options.FixedLength.HasValue) { if (svalue.Length > options.FixedLength.Value) { errors.AppendLine(string.Format("Truncating {0} fixed length {1} value too long {2}", options.FieldName, options.FixedLength.Value, svalue)); return(svalue.Substring(0, options.FixedLength.Value)); } else if (svalue.Length == options.FixedLength) { return(svalue); } StringBuilder s = new StringBuilder(); bool right = options.DataType == "n"; right = right || options.DataType.EndsWith("r"); if (right) { // right aligned while (s.Length + svalue.Length < options.FixedLength.Value) { s.Append(options.BlankFiller); } if (!string.IsNullOrEmpty(svalue)) { s.Append(svalue); } } else { // left aligned if (!string.IsNullOrEmpty(svalue)) { s.Append(svalue); } while (s.Length < options.FixedLength.Value) { s.Append(options.BlankFiller); } } return(s.ToString()); } else { return(svalue); } }
private static string formatDate(string svalue, FieldFormatOptions options, StringBuilder errors) { DateTime d; if (DateTime.TryParse(svalue, out d)) { if (!string.IsNullOrEmpty(options.Format)) { return(d.ToString(options.Format)); } else { return(d.ToString("yyyy-MM-dd")); } } return(string.Empty); }
private static string formatAlphaNum(string svalue, FieldFormatOptions options, StringBuilder errors) { StringBuilder s = new StringBuilder(); foreach (char c in svalue) { if (char.IsLetterOrDigit(c)) { s.Append(c); } else { s.Append(' '); } } return(s.ToString().Trim()); }
private static string applyFormat(string svalue, FieldFormatOptions options, StringBuilder errors) { string formatted; switch (options.DataType) { case "a": formatted = formatAlpha(svalue, options, errors); break; case "an": formatted = formatAlphaNum(svalue, options, errors); break; case "n": formatted = formatNum(svalue, options, errors); break; case "dt": formatted = formatDate(svalue, options, errors); break; default: formatted = svalue; break; } return(applyFixedLength(formatted, options, errors)); }
private static FieldFormatOptions parseFormatting(string format, string fieldName) { var formats0 = format.Trim().Split(new[] { ',' }, 3); var formats = formats0.Select(a => a.Trim()).ToArray(); string dataType; string dotnetFormatString; if (formats.Length > 0) { if (formats[0].Contains("[")) { int f1 = formats[0].IndexOf('['); int f2 = formats[0].IndexOf(']', f1); if (f2 == -1) { f2 = formats[0].Length - 1; } dataType = formats[0].Substring(0, f1); dotnetFormatString = formats[0].Substring(f1 + 1, f2 - f1); } else { dataType = formats[0]; dotnetFormatString = null; } } else { dataType = "an"; dotnetFormatString = null; } bool required; char blankFiller = dataType == "n" || dataType == "dt" ? '0' : ' '; if (formats.Length > 1) { required = formats[1] == "m"; int blankf1 = formats[1].IndexOf('['); if (blankf1 > 0) { blankFiller = formats[1][blankf1 + 1]; } } else { required = false; } int?fixedLength; if (formats.Length > 2) { int fx; if (int.TryParse(formats[2], out fx)) { fixedLength = fx; } else { fixedLength = null; } } else { fixedLength = null; } var options = new FieldFormatOptions() { FieldName = fieldName, DataType = dataType, Format = dotnetFormatString, Required = required, BlankFiller = blankFiller, FixedLength = fixedLength }; return(options); }