m
(3.0 released)
Line 1: Line 1:
{{unreleased}}{{stub|date=August 2017}}
+
{{stub|date=August 2017}}
{{about|the operators block to be released in [[Scratch 3.0]]|the current lists block|() Contains ()? (List block)}}
+
{{about|the operators block|the lists block|() Contains ()? (List block)}}
 
{{block
 
{{block
 
|name = () Contains ()
 
|name = () Contains ()
Line 9: Line 9:
 
}}
 
}}
  
The '''() Contains ()''' [[block]] is an [[Operators Blocks|Operators block]] and a [[Boolean Block|Boolean block]]. The block checks if the first parameter's text contains the second parameter's text{{-}}if it does, the block reports ''true''; otherwise, it reports ''false'', and this is case-insensitive. This block will be released with [[Scratch 3.0]].<ref>thisandagain. (10/8/2017). 'Blocks - implement "[string] contains [string]" reporter.[title]' https://github.com/LLK/scratch-gui/issues/601</ref>
+
The '''() Contains ()''' [[block]] is an [[Operators Blocks|Operators block]] and a [[Boolean Block|Boolean block]]. The block checks if the first parameter's text contains the second parameter's text{{-}}if it does, the block reports ''true''; otherwise, it reports ''false'', and this is case-insensitive. This block was released with [[Scratch 3.0]].
  
 
== Example Use ==
 
== Example Use ==

Revision as of 22:21, 9 January 2019

Document stub.png This article is a stub. It may be incomplete, unfinished, or have missing parts/sections. If the article can be expanded, please do so! There may be suggestions on its talk page. (August 2017)
This article is about the operators block. For the lists block, see () Contains ()? (List block).
() Contains ()
X contains y 3.0.png
Category Operators
Type Boolean

The () Contains () block is an Operators block and a Boolean block. The block checks if the first parameter's text contains the second parameter's text—if it does, the block reports true; otherwise, it reports false, and this is case-insensitive. This block was released with Scratch 3.0.

Example Use

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

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

Workaround

Main article: List of Block Workarounds
define (string1) contains (string2)
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)
    end
    if <(j) > (length of (string2))> then
      set [result v] to [true]
      stop [this script v]
    end
  end
end

References