string s="
Plataanstraat 5
Straat 12
Straat 12 II
Dr. J. Straat   12
Dr. J. Straat 12 a
Dr. J. Straat 12-14
Laan 1940 – 1945 37
Plein 1940 2
1213-laan 11
16 april 1944 Pad 1
1e Kruisweg 36
Laan 1940-45 66
Laan '40-'45
Langeloërduinen 3 46
Marienwaerdt 2e Dreef 2
Provincialeweg N205 1
Rivium 2e Straat 59.
Nieuwe gracht 20rd
Nieuwe gracht 20rd 2
Nieuwe gracht 20zw /2
Nieuwe gracht 20zw/3
Nieuwe gracht 20 zw/4
Bahnhofstr. 4
Wertstr. 10
Lindenhof 1
Nordesch 20
Weilstr. 6
Harthauer Weg 2
Mainaustr. 49
August-Horch-Str. 3
Marktplatz 31
Schmidener Weg 3
Karl-Weysser-Str. 6
"
/*
RESULTS:
========
5       Plataanstraat
12      Straat
12 II   Straat
12      Dr. J. Straat
12 a    Dr. J. Straat
14      Dr. J. Straat 12-
37      Laan 1940 ΓÇô 1945
2       Plein 1940
11      1213-laan
1       16 april 1944 Pad
36      1e Kruisweg
66      Laan 1940-ΓÇÖ45
45      Laan ΓÇÖ40-
46      Langelo├½rduinen 3
2       Marienwaerdt 2e Dreef
1       Provincialeweg N205
59.     Rivium 2e Straat
20rd    Nieuwe gracht
2       Nieuwe gracht 20rd
2       Nieuwe gracht 20zw /
3       Nieuwe gracht 20zw/
4       Nieuwe gracht 20 zw/
4       Bahnhofstr.
10      Wertstr.
1       Lindenhof
20      Nordesch
6       Weilstr.
2       Harthauer Weg
49      Mainaustr.
3       August-Horch-Str.
31      Marktplatz
3       Schmidener Weg
6       Karl-Weysser-Str.

33 records
*/

uses console
uses parseUtil
int le=len s    'length of data string
int ll          'length of each line
string ls       'string for each line of data
int i           'char index in data
int j           'char index in each line
int k=0         'output arrays index
int hn=0        'position index for house number
string sts[100] 'street array
string hns[100] 'house number array
do
  ls=GetRestOfLine s,i
  ll=len ls
  byte b at strptr ls
  j=ll
  hn=0
  do
    if j<=1
      exit do
    endif
    select b[j]
      case 48 to 57  : hn=j 'numbers
      case 45,46     : hn=j 'dash, dot
      case 65 to 90  :      'uppercase alpha
      case 96 to 122 :      'lowercase alpha
      case 127 to 155:      'upper ascii
      case 39        : hn=-1' not house no
      case else  :          'symbols and spaces
        if hn>0 'if house number position obtained
          k++
          sts[k]=left(ls,hn-1)
          hns[k]=mid(ls,hn)
          exit do
        endif
    end select
    if hn=-1
      sts[k]=ltrim(rtrim(ls))
      hns[k]="(none)"
      exit do
    endif
    j--
  loop
  if i>le
    exit do
  endif
loop
for i=1 to k
  print hns[i] tab sts[i] cr
next
print cr k " records" cr
pause