"() Contains ()" redirects here. For the list block, see () Contains ()? (List block).
() Contains ()?
() contains ()?
Category Operators
Type Boolean
Introduced in 3.0

The () contains ()? block is a boolean block and an operators block. The block returns whether or not the first parameter's text contains the second parameter's text. The comparison is not case-sensitive.

Example Uses

Checking whether input contains a certain string - useful for soft-checking as the actual input may not be exactly identical:

when green flag clicked
switch costume to (bunny v)
ask [What's this animal?] and wait
if <(answer) contains [bunny]?> then // the contains block is used instead of equal to because the user might say "a bunny"
    say [Correct!]
    say [Nope!]

Case Sensitivity

This block is not case sensitive. For example:

<[apple banana] contains [apple]?> // reports true
<[apple banana] contains [APPLE]?> // reports true
<[apple banana] contains [Apple]?> // reports true

Special Cases

If the second Argument is empty, this block will always report true.


Main article: List of Block Workarounds
define (string1) contains (string2)::custom
set [i v] to [0]
set [j v] to [1]
repeat (length of (string1))
    change [i v] by (1)
    if <(letter (i) of (string1)) = (letter (j) of (string2))> then
        set [j v] to [1]
        repeat until <<not <(letter ((i) + (j)) of (string1)) = (letter (j) of (string2))>> or <(j) > (length of (string2))>>
            change [j v] by (1)
        if <(j) > (length of (string2))> then
            set [result v] to [true]
            stop [this script v]
Cookies help us deliver our services. By using our services, you agree to our use of cookies.