Exemple #1
0
        //public static Address TryParse(string address)
        //{
        //	try
        //	{
        //		Address a = new Address();

        //		string[] split = address.Split('\n');

        //		a._street = split[0].TrimEnd();

        //		string split1 = split[1].TrimEnd();

        //		int index = split1.IndexOf(',');
        //		a._city = split1.Remove(index);
        //		a._state = split1.Substring(index + 2, split1.IndexOf(' ', index + 2) - (index + 2));
        //		index = split1.IndexOf(' ', index + 2) + 1;

        //		int space = split1.IndexOf(' ', index);
        //		if (space == -1)
        //			space = split1.Length;

        //		if (char.IsNumber(split1[index]))
        //		{
        //			a._zip = split1.Substring(index, space - index);

        //			index = space + 1;
        //			if (index < split1.Length)
        //			{
        //				if (char.IsLetter(split1[index]))
        //				{
        //					space = split1.IndexOf(' ', index);
        //					if (space == -1)
        //						space = split1.Length;

        //					a._country = split1.Substring(index, space - index);
        //				}
        //			}
        //		}
        //		else if (char.IsLetter(split1[index]))
        //		{
        //			a._country = split1.Substring(index, space - index);

        //			index = space + 1;
        //			if (index < split1.Length)
        //			{
        //				if (char.IsNumber(split1[index]))
        //				{
        //					space = split1.IndexOf(' ', index);
        //					if (space == -1)
        //						space = split1.Length;

        //					a._zip = split1.Substring(index, space - index);
        //				}
        //			}
        //		}

        //		if (split.Length >= 3)
        //		{
        //			string split2 = split[2].TrimEnd();

        //			bool lastUsed = false;

        //			if (a._zip == "")
        //			{
        //				if (RegexUtilities.IsValidZipCode(split2))
        //				{
        //					a._zip = split2;
        //					lastUsed = true;
        //				}
        //			}

        //			if (!lastUsed && a._country == "")
        //				a._country = split2;
        //		}

        //		return a;
        //	}
        //	catch { }

        //	return null;
        //}

        /// <summary>
        /// Tries to parse a string as a <see cref="Daytimer.DatabaseHelpers.Contacts.Address"/>.
        /// </summary>
        /// <param name="address"></param>
        /// <returns></returns>
        public static Address TryParse(string address)
        {
            try
            {
                string country = "";

                int zipIndex = -1;

                for (int i = address.Length - 1; i >= 0; i--)
                {
                    if (char.IsNumber(address[i]))
                    {
                        zipIndex = i + 1;
                        break;
                    }
                }

                if (zipIndex != -1 && zipIndex < address.Length)
                {
                    country = address.Substring(zipIndex).Trim();
                    address = address.Remove(zipIndex);
                }

                Address a = new Address();
                USAddressParseResult result = new USAddressParser().ParseAddress(address);

                if (result == null)
                {
                    return(null);
                }

                a._city    = FormatHelpers.Capitalize(result.City);
                a._state   = result.State;
                a._street  = FormatHelpers.Capitalize(result.StreetLine) + ".";
                a._zip     = result.Zip;
                a._country = country;

                return(a);
            }
            catch { }

            return(null);
        }
Exemple #2
0
        public void CanParseTypicalAddressWithoutPunctuationAfterStreetLine()
        {
            var parser = new USAddressParser(TestUtility.CreateParserContext("1005 N Gravenstein Highway Sebastopol, CA 95472", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("SEBASTOPOL", address.City);
            Assert.AreEqual("1005", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual("N", address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("CA", address.State);
            Assert.AreEqual("GRAVENSTEIN", address.Street);
            Assert.AreEqual("1005 N GRAVENSTEIN HWY", address.StreetLine);
            Assert.AreEqual("HWY", address.Suffix);
            Assert.AreEqual("95472", address.Zip);
        }
Exemple #3
0
        public void CanParsePostOfficeBoxAddress()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("P.O. BOX 4857, New York, NY 10001", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("NEW YORK", address.City);
            Assert.AreEqual(null, address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("NY", address.State);
            Assert.AreEqual(null, address.Street);
            Assert.AreEqual("PO BOX 4857", address.StreetLine);
            Assert.AreEqual(null, address.Suffix);
            Assert.AreEqual("10001", address.Zip);
        }
Exemple #4
0
        public void CanParseAddressWithRangelessSecondaryUnit()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("1050 Broadway Penthouse, New York, NY 10001", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("NEW YORK", address.City);
            Assert.AreEqual("1050", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual("PH", address.SecondaryUnit);
            Assert.AreEqual("NY", address.State);
            Assert.AreEqual("BROADWAY", address.Street);
            Assert.AreEqual("1050 BROADWAY PH", address.StreetLine);
            Assert.AreEqual(null, address.Suffix);
            Assert.AreEqual("10001", address.Zip);
        }
Exemple #5
0
        public void CanParseFractionalAddress()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("123 1/2 MAIN ST, RICHMOND, VA 23221", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("RICHMOND", address.City);
            Assert.AreEqual("123 1/2", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("VA", address.State);
            Assert.AreEqual("MAIN", address.Street);
            Assert.AreEqual("123 1/2 MAIN ST", address.StreetLine);
            Assert.AreEqual("ST", address.Suffix);
            Assert.AreEqual("23221", address.Zip);
        }
Exemple #6
0
        public void CanParseAddressWithRangedUnitAttachedToNumber()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("403D BERRYFIELD LANE CHESAPEAKE VA 23224", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("CHESAPEAKE", address.City);
            Assert.AreEqual("403", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual("D", address.SecondaryNumber);
            Assert.AreEqual("APT", address.SecondaryUnit);
            Assert.AreEqual("VA", address.State);
            Assert.AreEqual("BERRYFIELD", address.Street);
            Assert.AreEqual("403 BERRYFIELD LN APT D", address.StreetLine);
            Assert.AreEqual("LN", address.Suffix);
            Assert.AreEqual("23224", address.Zip);
        }
Exemple #7
0
        public void CanParseAddressWithCardinalStreetName()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("500 SOUTH STREET VIRGINIA BEACH VIRGINIA 23452", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("VIRGINIA BEACH", address.City);
            Assert.AreEqual("500", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("VA", address.State);
            Assert.AreEqual("SOUTH", address.Street);
            Assert.AreEqual("500 SOUTH ST", address.StreetLine);
            Assert.AreEqual("ST", address.Suffix);
            Assert.AreEqual("23452", address.Zip);
        }
Exemple #8
0
        public void CanParseQueensStyleAddress()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("123-465 34th St New York NY 12345", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("NEW YORK", address.City);
            Assert.AreEqual("123-465", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("NY", address.State);
            Assert.AreEqual("34TH", address.Street);
            Assert.AreEqual("123-465 34TH ST", address.StreetLine);
            Assert.AreEqual("ST", address.Suffix);
            Assert.AreEqual("12345", address.Zip);
        }
Exemple #9
0
        public void CanParseAddressWithSpacedAlphanumericRange()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("N645 W23001 BLUEMOUND ROAD, ROLLING MEADOWS, IL, 12345", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("ROLLING MEADOWS", address.City);
            Assert.AreEqual("N645W23001", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("IL", address.State);
            Assert.AreEqual("BLUEMOUND", address.Street);
            Assert.AreEqual("N645W23001 BLUEMOUND RD", address.StreetLine);
            Assert.AreEqual("RD", address.Suffix);
            Assert.AreEqual("12345", address.Zip);
        }
Exemple #10
0
        public void CanParseGridStyleAddress()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("842 E 1700 S, Salt Lake City, UT 84105", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("SALT LAKE CITY", address.City);
            Assert.AreEqual("842", address.Number);
            Assert.AreEqual("S", address.Postdirectional);
            Assert.AreEqual("E", address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("UT", address.State);
            Assert.AreEqual("1700", address.Street);
            Assert.AreEqual("842 E 1700 S", address.StreetLine);
            Assert.AreEqual(null, address.Suffix);
            Assert.AreEqual("84105", address.Zip);
        }
Exemple #11
0
        public void CanParseAddressWithoutPunctuation()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("999 West 89th Street Apt A New York NY 10024", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("NEW YORK", address.City);
            Assert.AreEqual("999", address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual("W", address.Predirectional);
            Assert.AreEqual("A", address.SecondaryNumber);
            Assert.AreEqual("APT", address.SecondaryUnit);
            Assert.AreEqual("NY", address.State);
            Assert.AreEqual("89TH", address.Street);
            Assert.AreEqual("999 W 89TH ST APT A", address.StreetLine);
            Assert.AreEqual("ST", address.Suffix);
            Assert.AreEqual("10024", address.Zip);
        }
Exemple #12
0
        public void CanParseMilitaryAddress()
        {
            var parser = new USAddressParser(
                TestUtility.CreateParserContext("PSC BOX 453, APO AE 99969", ParserPattern.NorthAmerica));
            ParseResultCollection prc = parser.Parse(0);

            Assert.AreEqual(1, prc.Count);
            var address = prc[0].Value as Address;

            Assert.AreEqual("APO", address.City);
            Assert.AreEqual(null, address.Number);
            Assert.AreEqual(null, address.Postdirectional);
            Assert.AreEqual(null, address.Predirectional);
            Assert.AreEqual(null, address.SecondaryNumber);
            Assert.AreEqual(null, address.SecondaryUnit);
            Assert.AreEqual("AE", address.State);
            Assert.AreEqual(null, address.Street);
            Assert.AreEqual("PSC BOX 453", address.StreetLine);
            Assert.AreEqual(null, address.Suffix);
            Assert.AreEqual("99969", address.Zip);
        }