Jump to content
  • 0

complexe vergelijk, PatternCount??


kaajee

Question

Posted

Is het volgende mogelijk?

Het op inhoud vergelijken van twee tekst velden, maar op meerdere woorden.

vbld:

veld 1, (is de bron, hiermee moet MEE vergeleken worden) bevat:

kees, piet, jan, hans, frank, henri.

 

veld2 bevat de tekst die voor moet komen in veld1;

dus als veld 1 =

-De bal moet naar HANS gespeeld worden ---> resultaat 1 (komt voor)

-De bal moet naar HANS, KEES, HENRI gespeeld worden, maar niet naar piet en kees ---> 1 (komt voor)

--De bal moet naar KLAAS gespeeld worden ---> resultaat 0 (komt niet voor)

maar eigenlijk ook:

-De bal moet naar KEESjan ---> 1 (komt voor)

 

En?

(nog mooier: FM geeft ook aan welke woord of woorden matchen!!)

Thx!

6 answers to this question

Recommended Posts

  • 0
Posted

Maak in FM7 de custom functie

 

Match(Woord1;Woord2)

If(Position(Woord2;LeftWords(Woord1;1);1;1)>0;LeftWords(Woord1;1) & "¶";"") & 
If(IsEmpty(Woord1);"";Match ( MiddleWords(Woord1;2;999); Woord2 ))

Het resultaat zal zijn een lijst van woorden die overeenkomen. Delen van woorden worden niet herkend!

  • 0
Posted

Een calculatie in FMP5.5 zou ik niet kunnen bedenken (in FMP7 zijn daar inmiddels zeer fraaie functies voor geschreven).

 

Maar met een script kun je woord voor woord door je veld heen graven en vergelijken. Ik denk dat PatternCount() je grootste vriendje zal zijn. Een paar hulpveldjes, wat stukjes tekst hier en daar apart zetten: gaat dat lukken, Kaajee, of heb je meer hints nodig?

  • 0
Posted

het kan wel automatisch in FM5.5 met de volgende formule:

 

If(isempty(Middlewords(veld1;1;1);"";(If(Position(Veld2;Middlewords(veld1;1;1);1;1) > 0;Middlewords(Veld1;1;1)& "¶";"")) &
If(isempty(Middlewords(veld1;2;1);"";(If(Position(Veld2;Middlewords(veld1;2;1);1;1) > 0;Middlewords(Veld1;2;1)& "¶";"")) &
If(isempty(Middlewords(veld1;3;1);"";(If(Position(Veld2;Middlewords(veld1;3;1);1;1) > 0;Middlewords(Veld1;3;1)& "¶";"")) &
If(isempty(Middlewords(veld1;4;1);"";(If(Position(Veld2;Middlewords(veld1;4;1);1;1) > 0;Middlewords(Veld1;4;1)& "¶";"")) &
If(isempty(Middlewords(veld1;5;1);"";"Te veel woorden!")

 

Zei het dat er een limiet op het aantal te doorzoeken woorden in Veld1 is. (hierboven dus maximaal 4, eenvoudig te vergroten tot bv 10 of 20.)

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