Thanks Alex - I thought the single-pass ‘is among’ with wildcards was a long-shot, so I’ll concentrate on debugging the list iteration using the ‘contains’ check. :-)
The strings & sub-strings are simple - I have a large list of URLs that need to be processed differently (or ignored), based on various sub-string ’signatures’ that route them into different ‘buckets’ in an array. The ’signatures’ vary - hence my use of a list variable (derived from a field) rather than hard-coding the plain text as literals. BTW Good spot on the asterisk wildcard characters in the contains example below. This is just a typo in the email - they’re not (among the numerous bugs!) in the real code. :-) Thanks again for the steer. Best, Keith > On 1 Nov 2018, at 10:34, Alex Tweedly via use-livecode > <use-livecode@lists.runrev.com> wrote: > > Hi Keith, > > I think the simplest method would be (almost) your second attempt below. > However, you were using "*est*" - i.e. with the '*'s before and after the > phrase, which is what you would need for 'filter' but not for 'contains'. So > it should work with just > >> put “my test phrase” into myTestPhrase >> put “est” & cr & “phr” into tSubstrings >> >> repeat for each line L in tSubstrings >> if myTestPhrase contains L then answer “true” >> end repeat > There's almost certainly also a way of doing it in a single pass using regex > - but I'm not brave enough to go there :-) > > Are you expecting reallylarge strings to search ? Or really many phrases to > search for ? > > "beware optimizing something that is just plain fast enough already" > > Alex. > > On 01/11/2018 09:41, Keith Clarke via use-livecode wrote: >> Folks, >> What is the most efficient way to test whether a variable containing a >> string such as “my test phrase” contains one of several variable substrings, >> such as “est” OR “phr” OR... ? >> >> So far I’ve tried (without luck) approaches that simplify into... >> >> put “my test phrase” into myTestPhrase >> put “*est*” & cr & “*phr*” into tSubstrings >> >> if myTestPhrase is among the lines of tSubstrings then answer “true” >> >> repeat for each line L in tSubstrings >> if myTestPhrase contains L then answer “true” >> end repeat >> >> Both seem to be failing - do I have the wrong syntax or approach to the >> problem? >> >> TIA >> Keith >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode > > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode