Hi Hugh

First try.

But like from our clients, we need clearer specs. ;-) What are the punctuation rules?

This assumes only final punctuation in the target should be ignored. It will try to match punctuation where it exists in the source. It will fail if there is double punctuation in the target.



function whole s, t
  put the number of words in s into tNumWords
  put 0 into tCount

  repeat for each word w in t
    put toLower(w) into w2
    put toLower(word tCount + 1 of s) into sW

    // delete punctuation in final word
    if tCount = tNumWords - 1 then
// but don't remove if source has punctuation also (possible error here) repeat while last char of w2 is in ".,:;?!" and last char of w2 <> last char of sW
        delete last char of w2
      end repeat
    end if
    if sW = w2 then
      add 1 to tCount
      if tCount = tNumWords then
        return true
      end if
    else
      put 0 into tCount
    end if
  end repeat
  return false
end whole


On 12 Jun 2007, at 19:26, [EMAIL PROTECTED] wrote:

I am trying to write a function that returns whether a given phrase exists
in a field as whole words.

e.g.
put "This is a test." into fld 1 (note the punctuation)

whole("This is a tes",fld 1)  = FALSE
whole("This is a test",fld 1) = TRUE.

A bit like trying to get the line "This is a tes" is among the words of fld 1 to work (obviously it doesn't), even assuming no punctuation were involved!

I've returned to this little conundrum many times over the years but have
yet to solve it.

Any offers?

/H






_______________________________________________
metacard mailing list
[email protected]
http://lists.runrev.com/mailman/listinfo/metacard

_______________________________________________
metacard mailing list
[email protected]
http://lists.runrev.com/mailman/listinfo/metacard

Reply via email to