is among the words AND find words
Jim Hurley
jhurley0305 at sbcglobal.net
Wed Dec 21 13:40:44 EST 2011
Bob et. al.
>
> Message: 14
> Date: Wed, 21 Dec 2011 08:24:59 -0800
> From: Bob Sneidar <bobs at twft.com>
> To: How to use LiveCode <use-livecode at lists.runrev.com>
> Subject: Re: is among the words AND find words
> Message-ID: <BA41A52B-8B6E-4DC0-9996-1253098EAB57 at twft.com>
> Content-Type: text/plain; charset=us-ascii
>
> I think this underscores the need for the words keyword to be upgraded to reflect real text. For instance, word delimiters could be a property containing all the characters which might be word delimiters, all the punctuations for example. I don't know how you would treat a hyphen.
That would work.
>
> Upon thinking about it, I am not sure what the application would be for finding specific words in an english (or any other languages) phrase. It is useful for finding keywords in a Livecode statement for sure.
> Bob
The application would be one of gatering all the lines in a text field that contain a word or words and displaying them in a second field. The text might also include quotes and that messes up the wordOffset function.
Turns out the tokens don't work since the period is not a token so the token 1 of "time." is time.
Astonishingly, it turns out that LC all allows for
Put "time" is among the tokens of "Now is the time, for all good men."
That returns true.
But
Put "men" is among the tokens of "Now is the time, for all good men."
returns false--because of the period after "men"
I think I'll just strip the lead and trailing characters from the resulting wordOffset word, using something like:
function stripEnds tWord
repeat
if charIsNotLetter (char 1 of tWord) then
delete char 1 of tWord
next repeat
else
exit repeat
end if
end repeat
repeat
if charIsNotLetter (char -1 of tWord) then
delete char -1 of tWord
next repeat
else
exit repeat
end if
end repeat
return tWord
end stripEnds
function charIsNotLetter tChar
put charToNum(tChar) into tNum
switch
case tNum >= charToNum("a") and tNum <= charToNum("z")
return false
break
case tNum >= charToNum("A") and tNum <= charToNum("Z")
return false
break
default
return true
end switch
end charIsNotLetter
But I would prefer RR to implement your suggestion of augmenting the delimiters for "word" to include all non-letters.
More information about the use-livecode
mailing list