Jump to content
  • 0

extract / abstraheer tekst uit veld


kaajee

Question

Posted

Ik heb de oplossing al eens ergens gelezen, maar kan em niet meer vinden, help me out here please.....(FM 4 e/o 5.5)

Ik heb een tekst veld met veel tekst. Gewoon platte ASCII tekst met harde returns (inhoud email). Hieruit wil ik enkele tekst gegevens halen, ze worden met 'vaste gegevens' aangeleverd...

dus bijv. de volgende tekst:

 

naam: Piet Puk

adres: De grootstraat 25

banknr: 123456789

email: qwerty@abc.be

 

Deze tekst staat dus allemaal in 1 FM veld (inhoudEmail). Nu wil ik (bijv.) aleen banknr en email in een aparte velden hebben.

Ik ben al aardig op weg met:

RightWords( Middle(Email ; Position(Email; "Banknr:"; 1; 1); 17); 1)

dat werkt met het banknr, maar als het banknr (of email) langer of korter is dan 9 karakaters gaat het mis (door getal 17 in Formule)

Ergens moet de 'Middle' functie vervangen worden door de 'RightWords' denk ik, maar dat krijg ik niet voor elkaar.

Wie helpt mij even?

thx

 

(resumerend: FM moet op zoek in een tekstveld naar: "email: " en dan indien string gevonden daar het 'Right Word' van nemen.)

5 answers to this question

Recommended Posts

  • 0
Posted

Je moet eigenlijk berekenen hoeveel karakters je tekst lang is. Dat kan je doen aan de hand van de positie van de return.

 

Ik persoonlijk zou dan de middle functie opteeren ipv van de rightwords

 

Middle(Email ; Position(Email; "Banknr:"; 1; 1); Position(Email; ""; Position(Email; "Banknr:"; 1; 1); 1) - Position(Email; "Banknr:"; 1; 1) )

 

Allé iets in di trant. Ik heb het nog nie getest.

 

 

Koen

  • 0
Posted (edited)

Ja! dat lijkt te werken, nu heb ik idd:

'banknr: 123456789' als resultaat.

thx

Is het ook mogelijk om alleen het nr zelf te krijgen in deze/één berekening (dus aleen 123456789, zonder banknr) of moet ik dan op het resultaat weer een berekening loslaten?

(liefst heb ik het in 1 berekeningsveld)

Hierbij kan de 'spatie' tussen 'banknr: ' en het nr '123456789' wellicht dienst doen...

Edited by Guest
  • 0
Posted

Ik heb het zo opgelost:

Right(

(Middle(Body ; Position(Body; "email: "; 1; 1); Position(Body; "¶"; Position(Body; "email: "; 1; 1); 1) - Position(Body; "email: "; 1; 1) )); Length(

(Middle(Body ; Position(Body; "email: "; 1; 1); Position(Body; "¶"; Position(Body; "email: "; 1; 1); 1) - Position(Body; "email: "; 1; 1) ))) - Position(

(Middle(Body ; Position(Body; "email: "; 1; 1); Position(Body; "¶"; Position(Body; "email: "; 1; 1); 1) - Position(Body; "email: "; 1; 1) )); " "; 1; 1))

 

Waarbij 'Body' de gehele inhoud van de tekst (email in mijn geval) is en 'email: '(incl spatie) het 'zoekveld' is.....

De right functie kan nu wel prima, aangezien ik alle 'losse regels' ge-abstraheert heb en het dus ook niet uitmaakt hoe lang de tekenreeks is.

  • 0
Posted

Inderdaad. Ben ik blij dat ze in FileMaker 7 de Let() functie hebben geintroduceerd. Wellicht zag je formule er dan zo uit.

 

Let

(

[

searchstring = "email: "

;

myfield = Body & "¶"

;

oneline = Middle(myfield ; Position(myfield; searchstring; 1; 1); Position(myfield; "¶"; Position(myfield; searchstring; 1; 1); 1) - Position(myfield; searchstring; 1; 1) )

;

result = Right(oneline; Length(oneline) - Length(searchstring))

]

;

result

)

 

Combineer deze in FM8 nog maals met de script variabelen en je hebt een mooi stukje herbruikbare code:

 

Let

(

[

searchstring = $searchstring

;

myfield = $field & "¶"

;

oneline = Middle(myfield ; Position(myfield; searchstring; 1; 1); Position(myfield; "¶"; Position(myfield; searchstring; 1; 1); 1) - Position(myfield; searchstring; 1; 1) )

;

result = Right(oneline; Length(oneline) - Length(searchstring))

]

;

result

)

 

 

Koen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...