Softanza
StartFrançais
Softanza
Reference · stzString

Contains()

Whether the string contains the given substring.

also: contain contains includes has contain a word is present occurs in includes has holds is there present in does it have

Basic examples (2)

Softanza
oS = new stzString("tea rice tea fish")
? oS.Contains("tea")
? oS.NumberOfOccurrence("tea")
? @@( oS.FindAll("tea") )
Output
1
2
[ 1, 10 ]

run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 05-one-object-any-structure.en.md(opens in a new tab)

Softanza
# '^' is before 3 in '^^♥^^'
? Q("^^♥^^").ContainsXT("^", :Before = 3)
# '^' is after 2 in '--♥^^'
? Q("--♥^^").ContainsXT("^", :After = 2)
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 175_containsxt.ring(opens in a new tab)

Scope (8)

Softanza
# a caret after position 2
? Q("^^♥^^").ContainsXT("^", :AfterPosition = 2)
# a caret in the 5..3 span (normalized)
? Q("^^♥^^").ContainsInSection("^", 5, 3)
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 173_containsxt.ring(opens in a new tab)

Softanza
# '^' occurs before '♥^' in '^^♥^^'
? Q("^^♥^^").ContainsXT("^", :Before = "♥^")
# '^' occurs after '-♥' in '--♥^^'
? Q("--♥^^").ContainsXT("^", :After = "-♥")
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 176_containsxt.ring(opens in a new tab)

Softanza
# '^' occurs before position 3 in '^^♥^^'
? Q("^^♥^^").ContainsXT("^", :BeforePosition = 3)
# '^' occurs after position 2 in '--♥^^'
? Q("--♥^^").ContainsXT("^", :AfterPosition = 2)
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 174_containsxt.ring(opens in a new tab)

Softanza
# ContainsAt([1,4,7], '♥') is TRUE
? Q("♥^^♥^^♥").ContainsAt([ 1, 4, 7 ], "♥")
# ContainsXT('♥', :AtPositions=[1,4,7]) is TRUE
? Q("♥^^♥^^♥").ContainsXT("♥", :AtPositions = [ 1, 4, 7 ])
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 178_containsat.ring(opens in a new tab)

Softanza
o1 = new stzString("•••••••••")
# it does not contain the empty string
? o1.Contains("")
# it does contain a bullet
? o1.Contains("•")
Output
0
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 235_contains.ring(opens in a new tab)

Softanza
o1 = new stzString(" Q(@char).IsNumberInString() ")
# it contains @char
? o1.ContainsCS("@char", FALSE)
# ... but not @substring
? o1.ContainsCS("@substring", FALSE)
Output
1
0

run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 464_containscs.ring(opens in a new tab)

Softanza
o1 = new stzString("123♥♥678♥♥1234♥♥789")
# a heart in [3, 10]
? o1.ContainsXT( "♥", :InSection = [ 3, 10 ] )
# a heart in any of the sections
? o1.ContainsXT( "♥", :InSections = [ [ 3, 10 ], [ 8, 12 ], [ 14, 19 ] ] )
Output
1
1

run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 103_containsxt.ring(opens in a new tab)

Softanza
# empty contains nothing
? Q("").Contains('')
# ... not even text
? Q("").Contains('text')
# text does not contain it
? Q("text").Contains('')
Output
0
0
0

run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 612_dealing_in_emptiness_in_softanza.ring(opens in a new tab)

and 3 more in the tests

The extensions of this method

Each extension, and whether it exists for this method; an extension that exists combines with the others (FindSTCS).

Extension
Exists
What it adds · The names
Q
no
does what the method does, then returns the object, so the call can be chained
QQ
no
chains on the next, more specific type of object (the Q ladder)
QQQ
no
chains on the most specific type of object (the Q ladder)
QRT
no
returns the result as an object of the requested type
CS
yes
takes a case-sensitivity flag · ContainsCS
ST
no
takes the position to start from (StartingAt)
IB
no
takes bounds that are included (IncludingBounds)
XT
yes
the extended form: more parameters than the base method · ContainsXT
XTT
no
yet another extension: a further extended form, after XT
Z
no
includes the position in what it returns
ZZ
no
returns positions as sections, [start, end]
W
no
selects by a condition
WF
no
selects by a condition, with the expressive keywords (@NextItem, @PreviousItem...)
D
no
takes a direction, forward or backward (Directional)
F
no
takes a function (the condition or the update is given as a function); the forms document also uses F for the future form, which defers the action
Many
no
works on a collection of items instead of one (the plural form)
Except
no
takes exceptions, what to leave out (the exceptional form)
U
no
returns the result without duplication

Every example is a test file of the library, run inside the library for this page; only those whose output kept every promise their file wrote are shown.

See also