|
Scheiden straatnaam en huisnummer Posted: 15 Aug 2003 09:18 AM |
Hier een handig stukje code om een string met straatnaam + huisnummer van elkaar te scheiden.
Dat kan soms lastig zijn imv allerlei bijzaken als 1 hoog 2 achter, a, bis enz...
Wat het doet:
Met een regular expression op zoek naar het eerste nummer en dan met Left en Right de twee delen van elkaar scheiden. Dim straatOrg, re, straat, nummer, Match, Matches
straatOrg="Straatnaam 22 A"
Set re=New RegExp
re.pattern="[0-9]"
Set Matches=re.Execute(straatOrg)
For Each Match in Matches
straatnaam=Left(straatOrg, Match.FirstIndex)
nummer=Right(straatOrg, Len(straatOrg)-Match.FirstIndex)
Next
Set Matches=Nothing
Set re=Nothing
Response.Write(straatnaam & " - " & nummer & "<br>" & vbCrLf) |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 15 Aug 2003 09:57 AM |
Mmm...
Slecht voorbeeld ;-)
aAdres = Split(straatOrg,chr(32))
Response.wite (aAdres(0) & " - " & aAdres(1) & "<br>" & vbCrLf)
Gr,
Martin
|
Martin Jansen
ASPNL Moderation Team
http://www.ajaxcontroltoolkit.com |
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 15 Aug 2003 10:19 AM |
Ik wil hier geen ruzie maken, maar jouw voorbeeld is nog veel slechter...
Ik woon op de "Van Spanjelaan 40"
Dan wordt mijn straat dus "Van" en mijn huisnummer "Spanjelaan"
Lijkt me niet helemaal correct ;) |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 15 Aug 2003 11:22 AM |
Wij ruzie maken ? That will be the day ;-)
Ik had misschien specifiek moeten vermelden dat ik je voorbeeld input niet echt jofel vond. Die kon je namelijk ook op een andere manier oplossen....
Natuurlijk is jouw manier een zeer nette manier, maar gebruik dan voortaan meteen je 'Van Spanjelaan 40' als input...
Overigens ken ik ook een straat die "1e kostverloren kade" .... heet...
Wat dan ?
|
Martin Jansen
ASPNL Moderation Team
http://www.ajaxcontroltoolkit.com |
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 15 Aug 2003 11:38 AM |
Erm... schrijft men dat dan officieel niet voluit?
If Not... dan deze
Dim straatOrg, re, straat, nummer, Match, Matches
straatOrg="1ste Van den Straatnaam 22 A"
Set re=New RegExp
re.pattern="[0-9]"
re.Global = True
Set Matches=re.Execute(straatOrg)
For Each Match in Matches
If Match.FirstIndex>0 Then
straat=Left(straatOrg, Match.FirstIndex)
nummer=Right(straatOrg, Len(straatOrg)-Match.FirstIndex)
Exit For
End If
Next
Set Matches=Nothing
Set re=Nothing
Response.Write(straat & " <br> " & nummer) |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 15 Aug 2003 12:07 PM |
Ik denk overigens dat je gelijk hebt. Het zal wel "eerste kostverlorenkade" zijn...
Maar wat ik bedoel is dat het volgens mij niet zo vanzelfsprekend is, dat alle straten in Nederland standaard altijd uit letters bestaan...
Ik denk dus dat een probleem als dit vrij lastig te ondervangen is door op letters, danwel cijfers te zoeken...
Neemt niet weg dat de manier natuurlijk goed te gebruiken is voor andere doeleinden..
Gr,
Martin |
Martin Jansen
ASPNL Moderation Team
http://www.ajaxcontroltoolkit.com |
|
 |
|
Aemca
|
| Joined: 13 Dec 2002 |
| Total Posts: 23 |
| |
|
Re: Scheiden straat en huisnummer Posted: 26 Aug 2003 02:15 PM |
beste manier lijkt me om het eerste woord te negeren en daarna het eerste woord wat begint met een getal te zien als het nr en alles wat daarachter komt ook.
alles wat daarvoor valt is dan uiteraard de straat.
dussuh:
aAdres = Split(straatOrg,chr(32))
straat_eind = 0
straat = ""
nummer = ""
for i = 1 to ubound (aAdres)
if straat_eind = 0 then
if isnumeric (left (aAdres(i),1)) then
straat_eind = i
nummer = nummer & " " &aAdres(i)
else
straat = straat & " " &aAdres(i)
end if
else
nummer = nummer & " " &aAdres(i)
end if
next
if straat_eind = 0 then
response.write "geen nummer"
else
response.write "straat=" & straat
response.write "nummer" & nummer
end if
|
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 27 Jan 2004 04:25 PM |
Ken je "Plein 1940" in Amstelveen?
"Plein 1940 15" is dus een geldig adres.
Met andere woorden, los van alle uitzonderingen uit te programmeren is er geen foutloze routine te maken...en ik heb 6 jaar met adressen gewerkt, dus geloof me maar... ;) |
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 28 Jan 2004 09:02 AM |
| Precies, endaarom adviseer ik om een postcode database+abbo te kopen en mensen alleen een postcode + huisnummer in te laten vullen ;) |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 28 Jan 2004 01:09 PM |
..en het wordt nog leuker als het dan: plein 1940 14 4h wordt ;-)
..enne...Rutger. Jij denkt dat het kopen van zo'n database te veroorloven is voor het MKB ?
Martin |
Martin Jansen
ASPNL Moderation Team
http://www.ajaxcontroltoolkit.com |
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 28 Jan 2004 02:09 PM |
Nee, maar een oplossing is het wel.
En ik ken iemand die woiont op plein 1940 14 4h 3 achter |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 5 Mar 2004 04:11 AM |
Ach, de eerste zin in dit hele verhaal is al fout: hoe een adres en huisnummer te scheiden.
Een adres bestaat uit een straatnaam + huisnummer, postcode en woonplaats.
Ten tweede: welk nut dient het scheiden van straatnaam en nummer, en als het al een een nut dient, waarom dan niet direct gescheiden opgeslagen.
etc, etc... :-) |
Des te meer ik weet, des te meer moet ik nog bijleren. |
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 5 Mar 2004 04:07 PM |
Tjonge wat een ongefundeerde reactie, niet te geloven.
Op jouw verzoek het ik de code maar even aangepast zodat ook jij mijn code kunt volgen.
Het willen schieden van straatnaam en huisnummer wil je soms wel degelijk. Als je dagelijk routines moet schrijven voor het parsen van peroonsgegevens voor 1001 doeleinden dan kom je, geloof het of niet, geregeld situaties tegen waarin je wel degelijk de scheiding aan wilt brengen.
Omdat je niet altijd de verzamelaar van je eigen gegevens bent en je in dat soort gevallen ook nog eens vaak in een 'take it or leave it' situatie belandt moet je wel.
Wiep, ik hoop dat het een beetje duidelijk is waarom ik die reeds 313 keer bekeken code gepost heb. Volgende keer graag gefundeerde kritiek op posts van mensen. |
//Rutger Smit
Nieuw: Toffe Sloffe - babyslofjes
ASPNL Moderation Team
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
 |
|
|
Re: Scheiden straat en huisnummer Posted: 6 Mar 2004 12:41 AM |
Even een reactie. Mijn opmerking mag dan ongefundeerd zijn, maar dan is jouw oplossing dat ook, als je later vermeldt dat je eigenlijk maar een beter een postcode database + abbo kunt kopen.
Slaat natuurlijk helemaal nergens op.
Maar je moet mijn opmerking niet zo serieus nemen. Wat ik er wel mee wilde aangeven is dat je secuur moet zijn als je programmeert. Zeker als je anderen iets wilt uitleggen.
Enne, ik heb niet voor niets ;) achter mijn opmerking geplaatst.
Serieus is goed, maar maak er geen halszaak van. |
Des te meer ik weet, des te meer moet ik nog bijleren. |
|
 |
|
Tim
|
 |
 |
| Joined: 08 Dec 2002 |
| Total Posts: 2085 |
| |
|
Re: Scheiden straat en huisnummer Posted: 6 Mar 2004 12:47 AM |
Ok, en gelieve vanaf nu enkel to the point te antwoorden, ipv elkaars antwoorden af te kraken, of ik censureer !
De meest eenvoudige methode om een dergelijk probleem op te lossen is via reguliere expressies. Een adres kun je herleiden tot : <tekst><nummer><?tekst>, waarbij <nummer> het laatste numerieke gedeelte is uit de string, en <?tekst> optionieel is en een bus kan aanduiden. Ik heb echter geen ervaring met ASP en reguliere expressies, dus kan ik de preciese syntax niet geven. |
Tim *IceMan* Musschoot
Software Engineer
AspNL Moderation Team
http://www.aspalliance.com/timmusschoot
|
|
 |
|
freekbos
|
| Joined: 27 Jun 2006 |
| Total Posts: 3 |
| |
|
Re: Scheiden straatnaam en huisnummer Posted: 27 Jun 2006 03:45 PM |
Ik ben ook flink aant stoeien geweest met adressen.
Nu heb ik de volgende twee regular expressions gemaakt.
Deze is om de straatnaam eruit te filteren:
(\w+\s*)(\D\w+\s*)*\b(?!\D)
En deze om huisnummer + toevoeging terug te krijgen:
\s\d+(((\w+|s+)|\s)*)$
Maar zoals al eerder gezegt, het is (bijna?!?) onmogelijk om alle mogelijke straatnamen met huisnummers van elkaar te scheiden. |
100101011010100110010100100101011010100
011011000100100100001010110010101000101
010101101010011001010010010101101010011
111100101011010100110010100100101011010 |
|
 |
|
freekbos
|
| Joined: 27 Jun 2006 |
| Total Posts: 3 |
| |
|
Re: Scheiden straatnaam en huisnummer Posted: 29 Mar 2010 09:50 AM |
Look at me... :D
Replying to my own post 4 years later.
I knew I figured this one out before, and here it is. :D |
100101011010100110010100100101011010100
011011000100100100001010110010101000101
010101101010011001010010010101101010011
111100101011010100110010100100101011010 |
|
 |
|
freekbos
|
| Joined: 27 Jun 2006 |
| Total Posts: 3 |
| |
|
Re: Scheiden straatnaam en huisnummer Posted: 30 Mar 2010 12:09 PM |
Ik ben nog wat aan het stoeien geweest met die regex van toen.
En ik heb hem iets verbeterd. Maar nog steeds kun je nooit 100% alle straatnamen converteren.
De regex om de straatnaam te vinden is deze geworden:
^(((\w*\.?)*\s*)|(\w\s*))(\D\w+\s*)*\b(?!\D)
Hij is nu ook in staat om adressen te herkennen zoals:
1st Prulstraat
1st. Prulstraat
C.P. rulstraat
De regex voor het huisnummer en toevoeging heb ik niet meer gebruikt.
Dit heb ik eenvoudig opgelost door de straatnaam van het adres af te strippen en dat met de rest door te werken.
Hier is de C# code die ik geschreven heb hiervoor:
string address = "1st. CornelisPrulstraat 24-A";
Match streetMatch = Regex.Match(address, streetPattern);
string street = streetMatch.Value.Trim();
string numberWithAddition = address.Substring(streetMatch.Value.Length).Trim();
Match numberMatch = Regex.Match(numberWithAddition, numberPattern);
string number = numberMatch.Value;
string addition = numberWithAddition.Substring(numberMatch.Length).Trim();
if (number.Length == 0)
throw new InvalidProgramException(string.Format("Address '{0}' cannot be converted. The number can't be determined.", address));
if (addition.Length > 0)
{
// Strip off any slashes or minus characters.
addition = Regex.Replace(addition, @"[^0-9|a-z|A-Z|\s]", string.Empty);
} |
100101011010100110010100100101011010100
011011000100100100001010110010101000101
010101101010011001010010010101101010011
111100101011010100110010100100101011010 |
|
 |
|