public static string Format(ZipStruct value, FormatAttrib param) { if (value == null) { throw new ArgumentNullException("value"); } return(value.Text); }
public static bool TryParse(string text, ParseAttrib param, out ZipStruct value) { if (string.IsNullOrEmpty(text)) { value = EmptyZipStruct; return(false); } // check param Func <CountryID> countryIdDelegate; var countryId = ((param != null) && ((countryIdDelegate = param.CountryID) != null) ? countryIdDelegate() : CountryID.Usa); int textLength; if ((countryId & CountryID.Canada) == CountryID.Canada) { // canada/generic parsing text = StringEx.ExtractString.ExtractAlphaDigit(text); textLength = text.Length; if ((textLength == 6) && (char.IsLetter(text[0])) && (char.IsDigit(text[1])) && (char.IsLetter(text[2])) && (char.IsDigit(text[3])) && (char.IsLetter(text[4])) && (char.IsDigit(text[5]))) { var zip = text.Substring(0, 3); var zip2 = text.Substring(3); value = new CanadaZipStruct { Text = zip + " " + zip2, Zip = zip, Zip2 = zip2 }; return(true); } } if ((countryId & CountryID.Usa) == CountryID.Usa) { // usa/generic parsing text = StringEx.ExtractString.ExtractDigit(text); textLength = text.Length; if ((textLength >= 7) && (textLength <= 9)) { var zip5 = text.Substring(0, 5); var zip4 = text.Substring(5).PadLeft(4, '0'); value = new UsaZipStruct { Text = zip5 + "-" + zip4, Zip5 = zip5, Zip4 = zip4 }; return(true); } else if ((textLength >= 3) && (textLength <= 5)) { var zip5 = text.PadLeft(5, '0'); value = new UsaZipStruct { Text = zip5, Zip5 = zip5 }; return(true); } } if ((countryId & CountryID.None) == CountryID.None) { // accept all value = new ZipStruct { Text = text }; return(true); } value = EmptyZipStruct; return(false); }