Postal Address Parser

On our e-commerce shop, we needed to be able to format customer addresses in the correct format and layout for the destination countries, to do this I have written a simple C# postal address parser to format the input address in international formats for postal labels.

I have included 3 different formatting modes in the class but it is simple to add extra formats and countries if needed.

Usage:

ParseAddress(string CustomerName, string Organisation, string address1, string address2, string address3, string address4, string address5, string town, string county, string postcode, string country, bool returnhtml)

Returns a string containing the formatted address

The C# class can be downloaded from GitHub or copied from the listing below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AddressFormater
{
    public class AddressParser
    {
        public string ParseAddress(string CustomerName, string Organisation, string address1, string address2, string address3, string address4, string address5, string town, string county, string postcode, string country, bool returnhtml)
        {
            // create postal address object with address info
            PostalAddress deladdress = new PostalAddress(CustomerName, Organisation, address1, address2, address3, address4, address5, town, county, postcode, country);

            // select formatting mode from country name
            int switchmode = 0;
            switch (country)
            {
                case "Albania":
                    switchmode = 1;
                    break;
                case "Algeria":
                    switchmode = 1;
                    break;
                case "American Samoa":
                    switchmode = 1;
                    break;
                case "Andorra":
                    switchmode = 1;
                    break;
                case "Angola":
                    switchmode = 1;
                    break;
                case "Anguilla":
                    switchmode = 1;
                    break;
                case "Antarctica":
                    switchmode = 1;
                    break;
                case "Antigua and Barbuda":
                    switchmode = 1;
                    break;
                case "Aruba":
                    switchmode = 1;
                    break;
                case "Australia":
                    switchmode = 2;
                    break;
                case "Austria":
                    switchmode = 1;
                    break;
                case "Bahamas":
                    switchmode = 1;
                    break;
                case "Bahrain":
                    switchmode = 1;
                    break;
                case "Bangladesh":
                    switchmode = 1;
                    break;
                case "Barbados":
                    switchmode = 1;
                    break;
                case "Belarus":
                    switchmode = 1;
                    break;
                case "Belgium":
                    switchmode = 1;
                    break;
                case "Belize":
                    switchmode = 1;
                    break;
                case "Bermuda":
                    switchmode = 1;
                    break;
                case "Bhutan":
                    switchmode = 1;
                    break;
                case "Bolivia":
                    switchmode = 1;
                    break;
                case "Botswana":
                    switchmode = 1;
                    break;
                case "Bouvet Island":
                    switchmode = 1;
                    break;
                case "Brazil":
                    switchmode = 1;
                    break;
                case "British Indian Ocean Territory":
                    switchmode = 1;
                    break;
                case "British Virgin Islands":
                    switchmode = 1;
                    break;
                case "Brunei":
                    switchmode = 1;
                    break;
                case "Bulgaria":
                    switchmode = 1;
                    break;
                case "Burundi":
                    switchmode = 1;
                    break;
                case "Cambodia":
                    switchmode = 1;
                    break;
                case "Cameroon":
                    switchmode = 1;
                    break;
                case "Canada":
                    switchmode = 2;
                    break;
                case "Cayman Islands":
                    switchmode = 1;
                    break;
                case "Central African Republic":
                    switchmode = 1;
                    break;
                case "Chad":
                    switchmode = 1;
                    break;
                case "Channel Islands":
                    switchmode = 1;
                    break;
                case "Chile":
                    switchmode = 1;
                    break;
                case "Christmas Island":
                    switchmode = 1;
                    break;
                case "Cocos (Keeling) Islands":
                    switchmode = 1;
                    break;
                case "Colombia":
                    switchmode = 1;
                    break;
                case "Comoros":
                    switchmode = 1;
                    break;
                case "Cook Islands":
                    switchmode = 1;
                    break;
                case "Costa Rica":
                    switchmode = 1;
                    break;
                case "Croatia":
                    switchmode = 1;
                    break;
                case "Cuba":
                    switchmode = 1;
                    break;
                case "Cyprus":
                    switchmode = 1;
                    break;
                case "Czech Republic":
                    switchmode = 1;
                    break;
                case "Denmark":
                    switchmode = 1;
                    break;
                case "Djibouti":
                    switchmode = 1;
                    break;
                case "Dominica":
                    switchmode = 1;
                    break;
                case "Dominican Republic":
                    switchmode = 1;
                    break;
                case "East Timor":
                    switchmode = 1;
                    break;
                case "Ecuador":
                    switchmode = 1;
                    break;
                case "Egypt":
                    switchmode = 1;
                    break;
                case "El Salvador":
                    switchmode = 1;
                    break;
                case "Equatorial Guinea":
                    switchmode = 1;
                    break;
                case "Estonia":
                    switchmode = 1;
                    break;
                case "Ethiopia":
                    switchmode = 1;
                    break;
                case "Falkland Islands (Malvinas)":
                    switchmode = 1;
                    break;
                case "Faroe Islands":
                    switchmode = 1;
                    break;
                case "Federated States of Micronesia":
                    switchmode = 1;
                    break;
                case "Fiji":
                    switchmode = 1;
                    break;
                case "Finland":
                    switchmode = 1;
                    break;
                case "France":
                    switchmode = 1;
                    break;
                case "French Guiana":
                    switchmode = 1;
                    break;
                case "French Polynesia":
                    switchmode = 1;
                    break;
                case "French Southern Territories":
                    switchmode = 1;
                    break;
                case "Gabon":
                    switchmode = 1;
                    break;
                case "Georgia":
                    switchmode = 1;
                    break;
                case "Germany":
                    switchmode = 1;
                    break;
                case "Gibraltar":
                    switchmode = 1;
                    break;
                case "Greece":
                    switchmode = 1;
                    break;
                case "Greenland":
                    switchmode = 1;
                    break;
                case "Grenada":
                    switchmode = 1;
                    break;
                case "Guadeloupe":
                    switchmode = 1;
                    break;
                case "Guam":
                    switchmode = 1;
                    break;
                case "Guatemala":
                    switchmode = 1;
                    break;
                case "Guyana":
                    switchmode = 1;
                    break;
                case "Heard Island and McDonald Islands":
                    switchmode = 1;
                    break;
                case "Honduras":
                    switchmode = 1;
                    break;
                case "Hungary":
                    switchmode = 1;
                    break;
                case "Iceland":
                    switchmode = 1;
                    break;
                case "India":
                    switchmode = 2;
                    break;
                case "Indonesia":
                    switchmode = 2;
                    break;
                case "Ireland":
                    switchmode = 2;
                    break;
                case "Israel":
                    switchmode = 1;
                    break;
                case "Italy":
                    switchmode = 1;
                    break;
                case "Jamaica":
                    switchmode = 1;
                    break;
                case "Japan":
                    switchmode = 2;
                    break;
                case "Jordan":
                    switchmode = 1;
                    break;
                case "Kazakhstan":
                    switchmode = 1;
                    break;
                case "Kenya":
                    switchmode = 1;
                    break;
                case "Kiribati":
                    switchmode = 1;
                    break;
                case "Kuwait":
                    switchmode = 1;
                    break;
                case "Kyrgyzstan":
                    switchmode = 1;
                    break;
                case "Laos":
                    switchmode = 1;
                    break;
                case "Latvia":
                    switchmode = 1;
                    break;
                case "Lesotho":
                    switchmode = 1;
                    break;
                case "Liechtenstein":
                    switchmode = 1;
                    break;
                case "Lithuania":
                    switchmode = 1;
                    break;
                case "Luxembourg":
                    switchmode = 1;
                    break;
                case "Macedonia":
                    switchmode = 1;
                    break;
                case "Madagascar":
                    switchmode = 1;
                    break;
                case "Malawi":
                    switchmode = 1;
                    break;
                case "Malaysia":
                    switchmode = 1;
                    break;
                case "Maldives":
                    switchmode = 1;
                    break;
                case "Malta":
                    switchmode = 1;
                    break;
                case "Marshall Islands":
                    switchmode = 1;
                    break;
                case "Martinique":
                    switchmode = 1;
                    break;
                case "Mauritania":
                    switchmode = 1;
                    break;
                case "Mauritius":
                    switchmode = 1;
                    break;
                case "Mayotte":
                    switchmode = 1;
                    break;
                case "Metropolitan France":
                    switchmode = 1;
                    break;
                case "Mexico":
                    switchmode = 1;
                    break;
                case "Monaco":
                    switchmode = 1;
                    break;
                case "Mongolia":
                    switchmode = 1;
                    break;
                case "Montserrat":
                    switchmode = 1;
                    break;
                case "Morocco":
                    switchmode = 1;
                    break;
                case "Mozambique":
                    switchmode = 1;
                    break;
                case "Myanmar":
                    switchmode = 1;
                    break;
                case "Namibia":
                    switchmode = 1;
                    break;
                case "Nauru":
                    switchmode = 1;
                    break;
                case "Nepal":
                    switchmode = 1;
                    break;
                case "Netherlands":
                    switchmode = 1;
                    break;
                case "Netherlands Antilles":
                    switchmode = 1;
                    break;
                case "New Caledonia":
                    switchmode = 1;
                    break;
                case "New Zealand":
                    switchmode = 2;
                    break;
                case "Nicaragua":
                    switchmode = 1;
                    break;
                case "Niue":
                    switchmode = 1;
                    break;
                case "Norfolk Island":
                    switchmode = 1;
                    break;
                case "Northern Mariana Islands":
                    switchmode = 1;
                    break;
                case "Norway":
                    switchmode = 1;
                    break;
                case "Oman":
                    switchmode = 1;
                    break;
                case "Palau":
                    switchmode = 1;
                    break;
                case "Panama":
                    switchmode = 1;
                    break;
                case "Papua New Guinea":
                    switchmode = 1;
                    break;
                case "Paraguay":
                    switchmode = 1;
                    break;
                case "Peru":
                    switchmode = 1;
                    break;
                case "Philippines":
                    switchmode = 1;
                    break;
                case "Pitcairn":
                    switchmode = 1;
                    break;
                case "Poland":
                    switchmode = 1;
                    break;
                case "Portugal":
                    switchmode = 1;
                    break;
                case "Puerto Rico":
                    switchmode = 1;
                    break;
                case "Qatar":
                    switchmode = 1;
                    break;
                case "Reunion":
                    switchmode = 1;
                    break;
                case "Romania":
                    switchmode = 1;
                    break;
                case "Russia":
                    switchmode = 1;
                    break;
                case "Rwanda":
                    switchmode = 1;
                    break;
                case "Samoa":
                    switchmode = 1;
                    break;
                case "San Marino":
                    switchmode = 1;
                    break;
                case "Sao Tome and Principe":
                    switchmode = 1;
                    break;
                case "Saudia Arabia":
                    switchmode = 1;
                    break;
                case "Seychelles":
                    switchmode = 1;
                    break;
                case "Singapore":
                    switchmode = 2;
                    break;
                case "Slovakia":
                    switchmode = 1;
                    break;
                case "Slovenia":
                    switchmode = 1;
                    break;
                case "Solomon Islands":
                    switchmode = 1;
                    break;
                case "South Africa":
                    switchmode = 2;
                    break;
                case "South Georgia and the South Sandwich Islands":
                    switchmode = 1;
                    break;
                case "South Korea":
                    switchmode = 2;
                    break;
                case "Spain":
                    switchmode = 1;
                    break;
                case "Sri Lanka":
                    switchmode = 1;
                    break;
                case "St. Helena":
                    switchmode = 1;
                    break;
                case "St. Kitts and Nevis":
                    switchmode = 1;
                    break;
                case "St. Lucia":
                    switchmode = 1;
                    break;
                case "St. Pierre and Miquelon":
                    switchmode = 1;
                    break;
                case "St. Vincent and the Grenadines":
                    switchmode = 1;
                    break;
                case "Suriname":
                    switchmode = 1;
                    break;
                case "Svalbard and Jan Mayen Islands":
                    switchmode = 1;
                    break;
                case "Swaziland":
                    switchmode = 1;
                    break;
                case "Sweden":
                    switchmode = 1;
                    break;
                case "Switzerland":
                    switchmode = 1;
                    break;
                case "Syria":
                    switchmode = 1;
                    break;
                case "Tajikistan":
                    switchmode = 1;
                    break;
                case "Tanzania":
                    switchmode = 1;
                    break;
                case "Thailand":
                    switchmode = 1;
                    break;
                case "Tokelau":
                    switchmode = 1;
                    break;
                case "Tonga":
                    switchmode = 1;
                    break;
                case "Trinidad and Tobago":
                    switchmode = 1;
                    break;
                case "Tunisia":
                    switchmode = 1;
                    break;
                case "Turkey":
                    switchmode = 1;
                    break;
                case "Turkmenistan":
                    switchmode = 1;
                    break;
                case "Turks and Caicos Islands":
                    switchmode = 1;
                    break;
                case "Tuvalu":
                    switchmode = 1;
                    break;
                case "U.S. Virgin Islands":
                    switchmode = 1;
                    break;
                case "Uganda":
                    switchmode = 1;
                    break;
                case "Ukraine":
                    switchmode = 1;
                    break;
                case "United Arab Emirates":
                    switchmode = 1;
                    break;
                case "United Kingdom":
                    switchmode = 0;
                    break;
                case "United States":
                    switchmode = 2;
                    break;
                case "United States Minor Outlying Islands":
                    switchmode = 1;
                    break;
                case "Uruguay":
                    switchmode = 1;
                    break;
                case "Uzbekistan":
                    switchmode = 1;
                    break;
                case "Vanuatu":
                    switchmode = 1;
                    break;
                case "Vatican City":
                    switchmode = 1;
                    break;
                case "Venezuela":
                    switchmode = 1;
                    break;
                case "Vietnam":
                    switchmode = 1;
                    break;
                case "Wallis and Futuna Islands":
                    switchmode = 1;
                    break;
                case "Western Sahara":
                    switchmode = 1;
                    break;
                case "Yemen":
                    switchmode = 1;
                    break;
                case "Yugoslavia":
                    switchmode = 1;
                    break;
                case "Zambia":
                    switchmode = 1;
                    break;

                default:

                    break;
            }

            if (switchmode == 0)
            {
                return FormatUK(deladdress, returnhtml);
            }
            if (switchmode == 1)
            {
                return FormatPostCodeFirst(deladdress, returnhtml);
            }
            if (switchmode == 2)
            {
                return FormatPostCodeLast(deladdress, returnhtml);
            }

            return "";
        }

        string FormatUK(PostalAddress deladdress, bool returnhtml)
        {
            StringBuilder sb = new StringBuilder();

            if (deladdress.CustomerName.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.CustomerName + Environment.NewLine);
            }
            if (deladdress.Organisation.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Organisation + Environment.NewLine);
            }
            if (deladdress.Address1.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Address1 + Environment.NewLine);
            }
            if (deladdress.Address2.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Address2 + Environment.NewLine);
            }
            if (deladdress.Address3.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Address3 + Environment.NewLine);
            }
            if (deladdress.Address4.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Address4 + Environment.NewLine);
            }
            if (deladdress.Address5.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Address5 + Environment.NewLine);
            }
            if (deladdress.Town.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Town.ToUpper() + Environment.NewLine);
            }
            if (deladdress.County.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.County.ToUpper() + Environment.NewLine);
            }
            if (deladdress.Postcode.ToString().Trim().Length > 0)
            {
                sb.Append(deladdress.Postcode.ToUpper());
            }
            if (returnhtml)
            {
                return sb.Replace(Environment.NewLine, "
").ToString(); } else { return sb.ToString(); } } string FormatPostCodeLast(PostalAddress deladdress, bool returnhtml) { StringBuilder sb = new StringBuilder(); if (deladdress.CustomerName.ToString().Trim().Length > 0) { sb.Append(deladdress.CustomerName + Environment.NewLine); } if (deladdress.Organisation.ToString().Trim().Length > 0) { sb.Append(deladdress.Organisation + Environment.NewLine); } if (deladdress.Address1.ToString().Trim().Length > 0) { sb.Append(deladdress.Address1 + Environment.NewLine); } if (deladdress.Address2.ToString().Trim().Length > 0) { sb.Append(deladdress.Address2 + Environment.NewLine); } if (deladdress.Address3.ToString().Trim().Length > 0) { sb.Append(deladdress.Address3 + Environment.NewLine); } if (deladdress.Address4.ToString().Trim().Length > 0) { sb.Append(deladdress.Address4 + Environment.NewLine); } if (deladdress.Address5.ToString().Trim().Length > 0) { sb.Append(deladdress.Address5 + Environment.NewLine); } if (deladdress.Town.ToString().Trim().Length > 0) { sb.Append(deladdress.Town.ToUpper() + " " ); } if (deladdress.County.ToString().Trim().Length > 0) { sb.Append(deladdress.County.ToUpper() + " " ); } if (deladdress.Postcode.ToString().Trim().Length > 0) { sb.Append(deladdress.Postcode.ToUpper() + " " ); } sb.Append(Environment.NewLine + deladdress.Country.ToUpper().ToString()); if (returnhtml) { return sb.Replace(Environment.NewLine, "
").ToString(); } else { return sb.ToString(); } } string FormatPostCodeFirst(PostalAddress deladdress, bool returnhtml) { StringBuilder sb = new StringBuilder(); if (deladdress.CustomerName.ToString().Trim().Length > 0) { sb.Append(deladdress.CustomerName + Environment.NewLine); } if (deladdress.Organisation.ToString().Trim().Length > 0) { sb.Append(deladdress.Organisation + Environment.NewLine); } if (deladdress.Address1.ToString().Trim().Length > 0) { sb.Append(deladdress.Address1 + Environment.NewLine); } if (deladdress.Address2.ToString().Trim().Length > 0) { sb.Append(deladdress.Address2 + Environment.NewLine); } if (deladdress.Address3.ToString().Trim().Length > 0) { sb.Append(deladdress.Address3 + Environment.NewLine); } if (deladdress.Address4.ToString().Trim().Length > 0) { sb.Append(deladdress.Address4 + Environment.NewLine); } if (deladdress.Address5.ToString().Trim().Length > 0) { sb.Append(deladdress.Address5 + Environment.NewLine); } if (deladdress.Postcode.ToString().Trim().Length > 0) { sb.Append(deladdress.Postcode.ToUpper() + " "); } if (deladdress.Town.ToString().Trim().Length > 0) { sb.Append(deladdress.Town.ToUpper() + " "); } if (deladdress.County.ToString().Trim().Length > 0) { sb.Append(deladdress.County.ToUpper() + " "); } sb.Append(Environment.NewLine + deladdress.Country.ToUpper().ToString() + Environment.NewLine); if (returnhtml) { return sb.Replace(Environment.NewLine, "
").ToString(); } else { return sb.ToString(); } } } public class PostalAddress { // PostalAddress object getters and setters public string CustomerName { get; set; } public string Organisation { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Address3 { get; set; } public string Address4 { get; set; } public string Address5 { get; set; } public string Town { get; set; } public string County { get; set; } public string Postcode { get; set; } public string Country { get; set; } public PostalAddress(string customername, string organisation, string address1, string address2, string address3, string address4, string address5, string town, string county, string postcode, string country) { CustomerName = customername; Organisation = organisation; Address1 = address1; Address2 = address2; Address3 = address3; Address4 = address4; Address5 = address5; Town = town; County = county; Postcode = postcode; Country = country; } } }