Operator Scope of Action:
Operator First Added:
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 = $MyList.containsAnyOf("emulate");
Will be true if the tested note's $Text contains the word "emulate"; unlike with .contains() or .icontains() a partial value may be matched in the target list. If $MyList holds the values 'emulate', 'mimic' and 'simulate', the list is tested as if a literal string, i.e. with the semi-colon delimiters present:
$MyBoolean = "emulate;mimic;simulate".containsAnyOf("emulate");
A more applied example:
$MyBoolean = $MyList.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 = $MyList.containsAnyOf($MySet);
It is important to note that .containsAnyOf() is always a case-sensitive 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".
For a case-insensitive version if this operator see List/Set.icontainsAnyOf().
Note the slightly different behaviour from that when chaining a String.