FindNext()
Same as FindNextCS: FindNext: find the next occurrence of pcSubStr starting AFTER position nStart (so FindNext("x", 0) is equivalent to FindFirst). Ported from the legacy monolithic archive (~line 50328). Uses Haro's substr() with start-position support so it works for both case-sensitive and case-insensitive search without pulling in engine-level changes.
also written: FindNextSubString
Basic examples (2)
o1 = new stzString("123456789")
# nothing at or after 10
? o1.FindNext("1", :startingAt = 10)0
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 987_findnext.ring(opens in a new tab)
o1 = new stzString("[••[•[••]•[•]]••[••]]")
? o1.FindNext("[", :StartingAt = 17)
? o1.FindPrevious("]", :StartingAt = 13)0 9
run on 2026-10-02 04:22 inside the library at commit 0e72e2e2c; taken from 307_findnext.ring(opens in a new tab)
Scope (4)
o1 = new stzString("12♥♥♥67♥♥♥12♥♥♥")
# the 1st from position 3 is 3 itself
? o1.FindNthST(1, "♥♥♥", :StartingAt = 3)
# the next after 3
? o1.FindNext("♥♥♥", :StartingAt = 3)
# the previous before 10 must END before 10
? o1.FindPrevious("♥♥♥", :StartingAt = 10)3 8 3
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 316_findnthst.ring(opens in a new tab)
o1 = new stzString("..•.•..")
? o1.FindNext("•", :StartingAt = 3)
? o1.FindNextNth(2, "•", :StartingAt = 2)
? o1.FindNextNth(2, "•", :StartingAt = 3)
? o1.FindPrevious("•", :StartingAt = 5)
? o1.FindPreviousNth(2, "•", :StartingAt = 7)
? o1.FindPreviousNth(1, "•", :StartingAt = 5)
? o1.FindPreviousNth(2, "•", :StartingAt = 5)5 5 0 3 3 3 0
run on 2026-10-02 04:22 inside the library at commit 0e72e2e2c; taken from 304_findnext.ring(opens in a new tab)
o1 = new stzString("12•4•67")
# next after 3
? o1.FindNext("•", :StartingAt = 3)
# no 2nd next after 3
? o1.FindNextNth(2, "•", :StartingAt = 3)
# previous before 5
? o1.FindPrevious("•", :StartingAt = 5)
# no 2nd previous before 5
? o1.FindPreviousNth(2, "•", :StartingAt = 5)5 0 3 0
run on 2026-10-02 04:24 inside the library at commit 0e72e2e2c; taken from 989_findnext.ring(opens in a new tab)
o1 = new stzString("•••••••••")
# FindNext('') is 0
? o1.FindNext("", :StartingAt = 1)
# FindNext('x') (absent) is 0
? o1.FindNext("x", :StartingAt = 1)
# FindNext('•', from 5) is 6
? o1.FindNext("•", :StartingAt = 5)
# FindNthNext(6, '•', from 3) is 9
? o1.FindNthNext(6, "•", :StartingAt = 3)
# FindNthNext(5, '•', from 1) is 6
? o1.FindNthNext(5, "•", :StartingAt = 1)
# FindPrevious('•', from 5) is 4
? o1.FindPrevious("•", :StartingAt = 5)
# FindPrevious('•', from 2) is 1
? o1.FindPrevious("•", :StartingAt = 2)
# FindNthPrevious(8, '•', from 9) is 1
? o1.FindNthPrevious(8, "•", :StartingAt = 9)
# FindNthPrevious(3, '•', from 4) is 1
? o1.FindNthPrevious(3, "•", :StartingAt = 4)0 0 6 9 6 4 1 1 1
run on 2026-10-02 04:23 inside the library at commit 0e72e2e2c; taken from 236_findnext.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.FindNextNth · stzString.FindNth · stzString.FindNthNext · stzString.FindNthPrevious · stzString.FindPrevious · stzString.FindPreviousNth

