Ejemplo n.º 1
0
        private static Match TryParseUnitNumber(string addressString, Address address)
        {
            foreach (var unitNumberRegex in _unitNumberRegexes)
            {
                var match = unitNumberRegex.Match(addressString);
                if (match.Success)
                {
                    address.UnitNumber = match.Groups.Count > 1 ? match.Groups[1].Value : match.Value;
                    return match;
                }
            }

            return null;
        }
Ejemplo n.º 2
0
 private static void WipeAddress(Address address, string wipeString)
 {
     address.UnitNumber = wipeString;
     address.HouseNumber = wipeString;
     address.StreetDirPrefix = wipeString;
     address.StreetName = wipeString;
     address.StreetDesignator = wipeString;
     address.StreetDirSuffix = wipeString;
     address.Floor = wipeString;
 }
Ejemplo n.º 3
0
        private static Match TryParseHouseNumber(string addressString, Address address)
        {
            var match = _houseNumberRegex.Match(addressString);

            if (match.Success)
            {
                address.HouseNumber = match.Value;
            }

            return match;
        }
Ejemplo n.º 4
0
        private static Match TryParseStreetDesignator(string addressString, Address address)
        {
            var match = _streetDesignatorRegex.Match(addressString);

            if (match.Success)
            {
                address.StreetDesignator =
                    _streetDesignatorAbbreviations.ContainsKey(match.Value)
                        ? _streetDesignatorAbbreviations[match.Value]
                        : ToFirstUpper(match.Value);
            }

            return match;
        }
Ejemplo n.º 5
0
        private static Match TryParseFloor(string addressString, Address address)
        {
            foreach (var floorRegex in _floorRegexes)
            {
                var match = floorRegex.Match(addressString);
                if (match.Success)
                {
                    address.Floor = match.Groups.Count > 1 ? match.Groups[1].Value : match.Value;
                    return match;
                }
            }

            return null;
        }
Ejemplo n.º 6
0
        private static Match TryParseDirectionSuffix(string addressString, Address address)
        {
            var match = _directionSuffixRegex.Match(addressString);

            if (match.Success)
            {
                address.StreetDirSuffix = match.Value.ToUpper();
            }

            return match;
        }
Ejemplo n.º 7
0
        private static void ParseInternal(string addressString, Address address)
        {
            // Floor number or name.
            var match = TryParseFloor(addressString, address);
            RemoveMatch(ref addressString, match);

            // Unit number.
            match = TryParseUnitNumber(addressString, address);
            RemoveMatch(ref addressString, match);

            // Street number.
            match = TryParseHouseNumber(addressString, address);
            RemoveMatch(ref addressString, match);

            // Street designator.
            match = TryParseStreetDesignator(addressString, address);
            RemoveMatch(ref addressString, match);

            // Street direction prefix.
            match = TryParseDirectionPrefix(addressString, address);
            RemoveMatch(ref addressString, match);

            // Street direction suffix.
            match = TryParseDirectionSuffix(addressString, address);
            RemoveMatch(ref addressString, match);

            // Street name.
            match = _streetNameRegex.Match(addressString);
            address.StreetName = (match.Success ? match.Value : addressString).Trim();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Parses address string and returns new <b>Address</b> instance populated with parsed values.
        /// </summary>
        /// <param name="addressString">Address string that may contain unit and house numbers, street name and floor number.</param>
        /// <param name="useEmptyStringsByDefault">If <b>true</b>, address properties that are not found in address string will be populated with empty strings.</param>
        /// <returns><b>Address</b> instance populated with parsing results.</returns>
        public static Address Parse(string addressString, bool useEmptyStringsByDefault = true)
        {
            if (addressString == null)
                throw new ArgumentNullException("addressString");

            var address = new Address();
            if (useEmptyStringsByDefault)
                WipeAddress(address, "");

            ParseInternal(addressString, address);

            return address;
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Parses address string and populates <b>Address</b> instance with parsed values.
        /// </summary>
        /// <param name="addressString">Address string that may contain unit and house numbers, street name and floor number.</param>
        /// <param name="address"><b>Address</b> instance to be populated with parsing results.</param>
        /// <param name="useEmptyStringsByDefault">If <b>true</b>, address properties that are not found in address string will be populated with empty strings.</param>
        public static void Parse(string addressString, Address address, bool useEmptyStringsByDefault = true)
        {
            if (addressString == null)
                throw new ArgumentNullException("addressString");
            if (address == null)
                throw new ArgumentNullException("address");

            WipeAddress(address, useEmptyStringsByDefault ? "" : null);

            ParseInternal(addressString, address);
        }