Softanza
StartFrançais
Softanza
Reference · stzString

Split()

Split the string into a list of parts around a separator.

also: split separate tokenize break apart delimiter explode cut into parts separate tokenize break apart cut into parts explode divide on

Basic examples (2)

Softanza
# Split on the literal hyphen
? @@( Q("ONE-TWO-THREE").Split("-") )
# SplitW at every non-letter is equivalent
? @@( Q("ONE-TWO-THREE").SplitW('{ Q(@char).IsNotLetter() }') )
Output
[ "ONE", "TWO", "THREE" ]
[ "ONE", "TWO", "THREE" ]

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

Softanza
# SplitAtCharsW
? @@( Q("RingRingRing").SplitAtCharsW('Q(@char).IsUppercase()') )
# SplitW(:AtChars) is the same
? @@( Q("RingRingRing").SplitW(:AtChars = 'Q(@char).IsUppercase()') )
Output
[ "ing", "ing", "ing" ]
[ "ing", "ing", "ing" ]

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

Scope (4)

Softanza
o1 = new stzString("abc;123;gafsa;ykj")
# via SplitQ
? o1.SplitQ(";").NthItem(3)
# via the long natural name
? o1.NthSubstringAfterSplittingStringUsing(3, ";")
Output
gafsa
gafsa

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

Softanza
oAB  = new stzString("ab")
big  = new stzString( oAB.Repeated(1000000) )
oXC = new stzString("x,")
oCSV = new stzString( oXC.Repeated(200000) )  # 200,000 "x," pairs
# Split(',') yields 200,000 parts
? len(oCSV.Split(","))
Output
200000

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

Softanza
# SplitW at uppercase drops the R's
? @@( Q("RingRingRing").SplitW('Q(@char).IsUppercase()') )
# SplitAtW is the same
? @@( Q("RingRingRing").SplitAtW('Q(@char).IsUppercase()') )
# the :At named param is the same
? @@( Q("RingRingRing").SplitW(:At = 'Q(@char).IsUppercase()') )
Output
[ "ing", "ing", "ing" ]
[ "ing", "ing", "ing" ]
[ "ing", "ing", "ing" ]

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

Softanza
o1 = new stzString("abc" + nl + "de" + nl + "f")
# NumberOfChars counts every char incl. newlines
? o1.NumberOfChars()
# NumberOfLines is 3
? o1.NumberOfLines()
# SplitQ(NL).NumberOfItems agrees
? o1.SplitQ(nl).NumberOfItems()
Output
8
3
3

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

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
yes
does what the method does, then returns the object, so the call can be chained · SplitQ
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 · SplitCS
ST
no
takes the position to start from (StartingAt)
IB
no
takes bounds that are included (IncludingBounds)
XT
no
the extended form: more parameters than the base method
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
yes
selects by a condition · SplitW
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