Hoe destilleer ik een huisnummer en -toevoeging uit een adres?
Ik moet een computerprogramma schrijven dat een huisnummer, en los daarvan ook de huisnummer-toevoeging herkent uit een adresregel.
Het betreft daarbij alleen nederlandse adressen.
De routine moet ook om kunnen gaan met exoten als:
"Plein 1944 1a 1e etage" (huisnummer=1, toevoeging="a 1e etage") en
"Plein 1944 1 a 1e etage" (let op de spatie tussen de '1' en de 'a')
Mocht je je daar tóch op stuk willen bijten.... het moet uiteindelijk een cobol-routine worden....
Of ga je wellicht gebruik maken van een lijst van alle adressen (straatnamen) in NL?
Nog een idee/vraag. Zit de postcode in de adresregel? Daarmee kan je natuurlijk ook een hoop meer zekerheid mee krijgen, ten eerste welk deel de straatnaam is, ten tweede waar de range aan huisnummers ligt.
En zijn de adressen in een standaardformaat? Of is het maar net wat iemand heeft ingevuld, of waar het adres vandaan gevist is?
- "Stationsstraat 7a" (huisnummer=7, toev.="a")
- "Molenweg 3 hs" (huisnummer=3, toev.="hs")
- "18 Septemberplein 12" (huisnummer=12, geen toevoeging)
- "Kerkstraat 2-2" (huisnummer=2, toev.="-2")
- "Hoofdstraat 2 - 2" (huisnummer=2, toev.="- 2")
- "Plein 1944 1a 1e etage" (huisnummer=1, toev.="a 1e etage")
- "Plein 1944 1 a 1e etage" (merk de spatie op tussen de '1' en de 'a') Een oplossing zou kunnen zijn er een tabel onder te hangen met daarin alle straatnamen van Nederland. En dan daar alle adressen tegen matchen. Maar de data in zo'n tabel moet onderhouden worden en dat werkt in onze omgeving niet echt praktisch. Ik zoek daarom iets slims wat op basis van alleen het adres werkt, maar tegelijk wel altijd werkt
Om meerdere redenen niet. Op de eerste plaats draait de code op een mainframe. Die heeft geen lijntjes lopen naar willekeurige API's op het internet. Ten tweede loop je al snel tegen de AVG op wanneer je adressen van mensen het net op gaat slingeren.
Zoek hierin de eerste serie cijfers. Dat is je kale huisnummer. Maar...als dit kale huisnummer een jaartal ZOU KUNNEN zijn, EN het wordt gevolgd door een serie cijfers, dan is dit alsnog géén kaal huisnummer, maar onderdeel van de straatnaam. Voeg de eerste cijferreeks dan toe aan de straatnaam en ga naar (a). Kan het kale huisnummer geen jaartal zijn, OF wordt het NIET gevolgd door een serie cijfers, dan heb je het kale huisnummer te pakken. De rest is toevoeging. Zo pak je "Plein 1944" en "Laan 1940-1945" mee (als je de '-' als spatie behandelt, zeg maar). Kom je hiermee in de buurt?
Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.