Jump to content
  • 0

naam en voornaam filteren uit een vcard veld


Filip Raes

Question

Posted (edited)

Ik heb een container veld waar de gegevens ingelezen worden dmv QR code. Die QR code bevat een Vcard file(vcf).

Nu wil ik die container gegevens filteren naar een respectievelijke Naam veld, Voornaam veld, Titel veld, Bday veld en Org veld.

De velden Bday en Org heb ik eruit gehaald met GetValue, maar de velden Naam , Voornaam en Titel willen niet lukken (zal waarschijnlijk een andere formule zijn die ik niet ken).

Kan iemand mij helpen?

Edited by Filip Raes

7 answers to this question

Recommended Posts

  • 0
Posted

Kijk eerst even hoe de gegevens precies in de vcard als tekst staan. Met GetValue kun je iedere regel in een apart veld zetten. Daarna kun je per regel de gegevens filteren. Zo staat in de regel met naam en achternaam "N:<achternaam>;<voornaam>". En in de regel die begint met FN staat de volledige naam "FN:<voornaam> <achternaam>". Soms begint een regel ook wel eens met het woord item, zoals bv item1.TEL;CELL

  • 0
Posted

hier vind je alle informatie over hoe een vcard eruit ziet.

Op zich is het gewoon een tekst bestand met op elke lijn een key value pair. Dan is het kwestie van de juiste lijn te vinden, en de data er uit te halen. Zoals Banach al aanhaalde :)

https://www.iana.org/assignments/vcard-elements/vcard-elements.xhtml

 

Om lijsten te filteren gebruik deze functie: https://www.briandunning.com/cf/771, maar ben al een tijdje uit filemaker, dus misschien zijn er wel native functies die dit nu kunnen... 

 

  • 0
Posted (edited)
18 uren geleden, Banach zei:

Kijk eerst even hoe de gegevens precies in de vcard als tekst staan. Met GetValue kun je iedere regel in een apart veld zetten. Daarna kun je per regel de gegevens filteren. Zo staat in de regel met naam en achternaam "N:<achternaam>;<voornaam>". En in de regel die begint met FN staat de volledige naam "FN:<voornaam> <achternaam>". Soms begint een regel ook wel eens met het woord item, zoals bv item1.TEL;CELL

Correct ja, maar de vraag is hoe kan ik de naam, voornaam en titel gescheiden in een ander respectievelijk veld plaatsen. Ik ondervind problemen in mijn formules (Left, Right, Position, Filter enz) met de (scheidings)tekens zoals : , ; . die je kan zien bij de regel van de naam.

Dit is hoe het containerveld eruit ziet nadat ik de QR code heb ingelezen.

BEGIN:VCARD

N:Raes;Filip;;Mr.;.

BDAY:19660304

ORG: 25021088

END: VCARD

Edited by Filip Raes
  • 0
Posted
13 uren geleden, andries zei:

hier vind je alle informatie over hoe een vcard eruit ziet.

Op zich is het gewoon een tekst bestand met op elke lijn een key value pair. Dan is het kwestie van de juiste lijn te vinden, en de data er uit te halen. Zoals Banach al aanhaalde :)

https://www.iana.org/assignments/vcard-elements/vcard-elements.xhtml

 

Om lijsten te filteren gebruik deze functie: https://www.briandunning.com/cf/771, maar ben al een tijdje uit filemaker, dus misschien zijn er wel native functies die dit nu kunnen... 

 

Dit is net mijn vraag, hoe haal ik die data uit het containerveld en in hun respectievelijk velden van naam, voornaam en titel.

  • 0
Posted

Tsja, dat kan op vele manieren. Bijvoorbeeld door zo'n regel weer verder uit elkaar te trekken met 

Substitute ( vCard; [":"; ¶ ]; [";"; ¶ ])

De dubbele punt en de puntkomma worden dan vervangen door returns. Vervolgens kun je dan weer met GetValue de juiste regel uitfilteren.

  • 0
Posted
54 minuten geleden, Banach zei:

Tsja, dat kan op vele manieren. Bijvoorbeeld door zo'n regel weer verder uit elkaar te trekken met 

Substitute ( vCard; [":"; ¶ ]; [";"; ¶ ])

De dubbele punt en de puntkomma worden dan vervangen door returns. Vervolgens kun je dan weer met GetValue de juiste regel uitfilteren.

Dank u vriendelijk. 

  • 0
Posted (edited)

ik vind deze functies geniaal als ik aan tekst parsing doe:

text.before ( _text ; _searchString ; _occurrence ; _include.b )
https://www.briandunning.com/cf/642

text.after ( _text ; _searchString ; _occurrence ; _include.b )
https://www.briandunning.com/cf/643

text.betweenNext ( _text ; _searchString1 ; _occurrence1 ; _include1.b ; _searchString2 ; _occurrence2 ; _include2.b )
https://www.briandunning.com/cf/674

En dan kan je doen: 

//zoek de tekst na "N:" en voor de volgende "¶"
$nameInVcard = text.betweenNext ( $myVcardText ; "N:" ; 1 ; 0 ; ¶ ; 1 ; 0 )

en dan krijg je al  $nameInVcard = Raes;Filip;;Mr.;.

 

$nameAsArray = Substitute ( $nameInVcard ; ";" ; ¶ )

en dan volgens de specs (https://en.wikipedia.org/wiki/VCard)

Quote

A structured representation of the name of the person, place or thing associated with the vCard object. Structure recognizes, in order separated by semicolons: Family Name, Given Name, Additional/Middle Names, Honorific Prefixes, and Honorific Suffixes[5]    

kan je dit doen
 

$familyName = getValue ($nameAsArray ; 1 )
$firstName = getValue ($nameAsArray ; 2 )

 

En zo kan je dus verder alles uit parsen :)

(deze code is niet getest, dus kan zijn dat er hier en daar een foutje in zit)

Edited by andries

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...