Tinderbox v8 Icon

String.containsAnyOf(aSet)


Operator Type: 

Operator Scope of Action: 

Operator Purpose: 

Operator First Added: 

Operator Altered: 

 Function   [other Function type actions]

 List   [operators of similar scope]

 Query Boolean   [other Query Boolean operators]

 8.9.0

 


String.containsAnyOf("patternList")

From v8.8.0, the operator .containsAnyOf("patternList") is true if any of the words in a set of words (i.e. a list) is contained in the chained-to target string. As shown below, the list may have only one entry. From v8.9.0, the test is case-sensitive (previously it was case-insensitive). For example:

$MyBoolean = $Text.containsAnyOf("emulate");

Will be true if the tested note's $Text contains the word "emulate". A more applied example:

$MyBoolean = $Text.containsAnyOf(wordsRelatedTo("emulate"));

Will be true if the tested note's $Text contains the word "aspire".

patternList implies using a list of values (ideally with no dupes). This can be a literal list of 1 or more values—as in the example above, or an attribute reference holding a list of values, for instance:

$MyBoolean = $Text.containsAnyOf($MySet);

It is important to note that .containsAnyOf() is always a case-insensitive test. Thus in the first example above, it will match "emulate" but not "Emulate" or any other case variant of the word.

Although the examples above use whole words the list in patternList is actually processed assuming they are regular expressions (which may of course be literal strings). Thus in the first example above, it will match both "emulate" and "emulated" but not "emulating". The test value "emulate\b", expecting a word break after the final 'e' would this match "emulate" but not "emulated".

From v8.9.0, for a case-insensitive version of this operator see String.icontainsAnyOf().

Note that behaviour of the operator is slightly different if chained to a List or Set.