|
Tip 105 - Een e-mailadres uit een tekst isoleren
Iemand krijgt geregeld
e-mailadressen toegezonden die midden in een doorlopende
tekst staan. Hij haalt die adressen daar manueel uit
via copy en plakt ze daarna in een veld E-Mail
via paste. Nu wordt gevraagd: kan dit niet
automatisch? Met andere woorden: kan ik een e-mailadres uit
een doorlopende tekst filteren?
Gelukkig is het antwoord weer "ja",
en we gebruiken hiertoe nog maar eens de Middle-
en de Position-functie.
Het volstaat eigenlijk het hoofdkenmerk van een e-mailadres
te vinden, namelijk het @-teken en dan alle tekst vlak
ervoor en vlak erna te nemen. Dat geeft een mooi
e-mailadres. We moeten dus dat @-teken vinden, en dan
de spatie ervoor en de spatie erna. Wat tussen die
spaties staat is het e-mailadres. Zo eenvoudig is
dat.
Eerst leggen we de functie
Position
uit. We gaan die immers gebruiken om ons @-teken op te
sporen. Deze functie zoekt immers de positie, dus de
plaats, waarop een bepaald teken of een bepaalde tekenreeks
voor de eerste of zoveelste keer voorkomt geteld vanaf een
bepaalde positie. Het FileMaker-voorbeeld is
hier wel erg duidelijk: in de online help vertrekt men van
het woord Mississippi.
Position(Mississippi,"is",1,1)
Dit geeft 2.
Waarom? Omdat de gezochte groep
"is", als we beginnen te kijken vanaf positie 1 de eerste
keer voorkomt op positie 2.
Position(Mississippi,"is",3,1)
Dit geeft 5.
Waarom? Omdat de gezochte groep
"is", als we beginnen te kijken vanaf positie 3 de eerste
keer voorkomt op positie 5.
Nu zoeken we naar de "s" wanneer die
de tweede keer voorkomt vanaf positie 4:
Position(Mississippi, "s",
4, 2)
Dit geeft 7.
Waarom? Omdat de gezochte
letter "s", als we beginnen te kijken vanaf positie 4 de
tweede keer voorkomt op positie 7.
We zullen dus de functie
Position
gebruiken om de plaats van het @-teken te vinden.
Nu leggen we Middle
nog eens uit: deze functie haalt een stukje tekst uit een
woord (een letter-reeks eigenlijk), en wel een bepaald
aantal letters vanaf een bepaalde positie. We zullen
Middle
gebruiken om het e-mail-gedeelte voor het @-teken te vinden,
en daarna het e-mail-gedeelte na het @-teken.
Enkele voorbeelden (let op:
Middle
werkt zowel met tekst als met
velden):
Middle("schandelijk";6;3)
De functie wordt hier gebruikt met
een tekst (daarom de aanhalingstekens) en geeft als
resultaat del (drie letters lang en te beginnen vanaf
de zesde positie).
In het volgende geval wordt
Middle
gebruikt met een veld (geen aanhalingstekens voor en achter
de veldnaam):
Middle(Voornaam;3;2)
Dit geeft als resultaat dr
wanneer in het veld Voornaam de voornaam
André ingevuld is: twee letters lang en vanaf
de derde positie.
Als we dit nu allemaal combineren,
dan kunnen we de volgende formule gebruiken om alle letters
te vinden die vlak voor en vlak na het eerste
@-teken staan in een veld dat we Brieftekst
noemen:
Middle(Brieftekst;
Position(Brieftekst;"
";Position(Brieftekst;"@";0;1);-1)+1;
Position(Brieftekst;"
";Position(Brieftekst;"@";0;1);1)-
Position(Brieftekst;"
";Position(Brieftekst;"@";0;1);-1)-1)
|