Softanza
DémarrerEnglish
Softanza
Référence · stzString

SubStrings()

ENGINE-BACKED (StzEngineStringSubStrings): all substrings in (i,j) order, no dedup. Retires the O(n^2) Haro double-loop.

aussi écrite: Substrinks · Substrongs

Exemples de base (2)

Softanza
# length-4 substrings containing a heart pair
? @@( Q("..♥^^♥..^♥♥^..").SubStringsWF( func s { return Q(s).NumberOfChars() = 4 and Q(s).ContainsCS("♥♥", 1) } ) )
Sortie
[ ".^♥♥", "^♥♥^", "♥♥^." ]

exécuté le 2026-10-02 04:23 dans la bibliothèque au commit 0e72e2e2c ; tiré de 147_substringswf.ring(s'ouvre dans un nouvel onglet)

Softanza
o1 = new stzString("RINGORIALAND")
# there are 12*13/2 = 78 substrings
? o1.NumberOfSubStrings()
# SubStrings() returns that many
? len( o1.SubStrings() )
Sortie
78
78

exécuté le 2026-10-02 04:23 dans la bibliothèque au commit 0e72e2e2c ; tiré de 125_numberofsubstrings.ring(s'ouvre dans un nouvel onglet)

Portée (3)

Softanza
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())
Sortie
500500
500500
1000

exécuté le 2026-10-02 04:24 dans la bibliothèque au commit 0e72e2e2c ; tiré de 998_engine_string_largedata_narrated.ring(s'ouvre dans un nouvel onglet)

Softanza
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))
Sortie
199
100
99
50

exécuté le 2026-10-02 04:24 dans la bibliothèque au commit 0e72e2e2c ; tiré de 998_engine_string_largedata_narrated.ring(s'ouvre dans un nouvel onglet)

Softanza
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())
Sortie
5050
5050
100
50
3775
99

exécuté le 2026-10-02 04:24 dans la bibliothèque au commit 0e72e2e2c ; tiré de 998_engine_string_largedata_narrated.ring(s'ouvre dans un nouvel onglet)

Les extensions de cette méthode

Chaque extension, et si elle existe pour cette méthode ; une extension qui existe se compose avec les autres (FindSTCS).

Extension
Existe
Ce qu'elle ajoute · Les noms
Q
non
fait ce que fait la méthode, puis rend l'objet, pour que l'appel puisse s'enchaîner
QQ
non
enchaîne sur le type d'objet suivant, plus précis (l'échelle des Q)
QQQ
non
enchaîne sur le type d'objet le plus précis (l'échelle des Q)
QRT
non
rend le résultat comme un objet du type demandé
CS
oui
prend un indicateur de sensibilité à la casse · SubStringsCS
ST
non
prend la position de départ (StartingAt)
IB
non
prend des bornes incluses (IncludingBounds)
XT
non
la forme étendue : plus de paramètres que la méthode de base
XTT
non
encore une extension : une forme étendue de plus, après XT
Z
oui
inclut la position dans ce qu'elle rend · SubStringsZ
ZZ
oui
rend les positions comme des sections, [début, fin] · SubStringsZZ
W
oui
choisit selon une condition · SubStringsW
WF
oui
choisit selon une condition, avec les mots-clés expressifs (@NextItem, @PreviousItem...) · SubStringsWF
D
non
prend une direction, en avant ou en arrière (Directional)
F
non
prend une fonction (la condition ou la mise à jour est donnée comme une fonction) ; le document des formes emploie aussi F pour la forme future, qui diffère l'action
Many
non
travaille sur une collection d'éléments au lieu d'un seul (la forme plurielle)
Except
non
prend des exceptions, ce qu'il faut laisser de côté (la forme exceptionnelle)
U
oui
rend le résultat sans doublon · SubStringsU

Chaque exemple est un fichier de test de la bibliothèque, exécuté dans la bibliothèque pour cette page ; seuls ceux dont la sortie a tenu toutes les promesses écrites par leur fichier sont montrés. Les explications, les titres et le code sont ceux de la bibliothèque, en anglais.

Voir aussi