SubStrings()
ENGINE-BACKED (StzEngineStringSubStrings): all substrings in (i,j) order, no dedup. Retires the O(n^2) Haro double-loop.
also written: Substrinks · Substrongs
Basic examples (2)
# length-4 substrings containing a heart pair
? @@( Q("..♥^^♥..^♥♥^..").SubStringsWF( func s { return Q(s).NumberOfChars() = 4 and Q(s).ContainsCS("♥♥", 1) } ) )[ ".^♥♥", "^♥♥^", "♥♥^." ]
run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 147_substringswf.ring(opens in a new tab)
o1 = new stzString("RINGORIALAND")
# there are 12*13/2 = 78 substrings
? o1.NumberOfSubStrings()
# SubStrings() returns that many
? len( o1.SubStrings() )78 78
run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 125_numberofsubstrings.ring(opens in a new tab)
Scope (3)
oA = new stzString("a")
s = new stzString( oA.Repeated(1000) )
# NumberOfSubStrings is 500,500 (L(L+1)/2)
? s.NumberOfSubStrings()
# SubStrings() enumerates all 500,500
? len(s.SubStrings())
# SubStringsU() distinct is 1,000 (a^1..a^1000)
? len(s.SubStringsU())500500 500500 1000
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 998_engine_string_largedata_narrated.ring(opens in a new tab)
oA = new stzString("a")
m = new stzString("aA")
big = new stzString( m.Repeated(50) )
# SubStringsCS(1) exact-distinct is 199
? len(big.SubStringsCS(1))
# SubStringsU() folds all case -> 100 (like a^100)
? len(big.SubStringsU())
# DuplicatesCS(1) exact is 99
? len(big.DuplicatesCS(1))
# DuplicatesCS(0) case-insensitive dedup is 50
? len(big.DuplicatesCS(0))199 100 99 50
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 998_engine_string_largedata_narrated.ring(opens in a new tab)
oA = new stzString("a")
s = new stzString( oA.Repeated(100) )
# NumberOfSubStrings is 5,050
? s.NumberOfSubStrings()
# SubStrings() enumerates 5,050
? len(s.SubStrings())
# SubStringsU() is 100
? len(s.SubStringsU())
# DuplicatesCS(1) is 50
? len(s.DuplicatesCS(1))
# ConsecutiveSubStrings is 3,775
? len(s.ConsecutiveSubStrings())
# FindDupSecutiveChars is 99
? len(s.FindDupSecutiveChars())5050 5050 100 50 3775 99
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 998_engine_string_largedata_narrated.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).
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
- The class stzString
- The area's reference: String
- The other methods in these examples: stzString.ConsecutiveSubStrings · stzString.Duplicates · stzString.FindDupSecutiveChars · stzString.NumberOfSubStrings

