Added findStringInstance function to strings package

This commit is contained in:
2025-09-11 14:45:16 +10:00
parent 4806a41b88
commit cfa6bae744
2 changed files with 47 additions and 6 deletions

View File

@@ -2,26 +2,30 @@
This library adds extra string manipulation functions to ground. It is entirely coded in ground. This library adds extra string manipulation functions to ground. It is entirely coded in ground.
Please note that you cannot copy a single function from the package, as some functions rely on other functions in the library. Please note that you cannot copy a single function from the package, as some functions rely on other functions in the library (reliance on other functions is detailed below).
## Functions ## Functions
### fun -char !findChar -string &str -char &char ### fun -char !findChar -string &str -char &char
Finds the index of $char in $string Finds the index of $char in $string (no prerequisites).
### fun -char !findCharInstance -string &str -char &char -int &instance ### fun -char !findCharInstance -string &str -char &char -int &instance
Finds the index of the `$instance`th instance of $char in $str Finds the index of the `$instance`th instance of $char in $str (no prerequisites).
### fun -string !mid -string &str -int &idx -int &len ### fun -string !mid -string &str -int &idx -int &len
Finds $len characters of $str, starting at $idx. Finds $len characters of $str, starting at $idx (no prerequisites).
### fun -string !inBrackets -string &str -char &left -char &right -int &instance ### fun -string !inBrackets -string &str -char &left -char &right -int &instance
Finds the content of the `$instance`th instance of brackets, with the left bracket being the $left char and the right bracket of $right char. Finds the content of the `$instance`th instance of brackets, with the left bracket being the $left char and the right bracket of $right char (requires !findCharInstance).
### fun -string !matchStart -string &str -string &instr ### fun -string !matchStart -string &str -string &instr
Checks if the start of $str matches $instr. Checks if the start of $str matches $instr (requires !mid).
### fun -int !findStringInstance -string &str -string &instr -int &instance
The same as !findCharInstance, but allows a string to be parsed to be searched for (no prerequisites).

View File

@@ -82,4 +82,41 @@ fun -string !matchStart -string &str -string &instr
call !mid &store call !mid &store
equal $store $instr &store equal $store $instr &store
return $store return $store
endfun
fun -int !findStringInstance -string &str -string &instr -int &instance
getstrsize $instr &len
subtract $len 1 &len
set &idx $len
@loop
set &tempstr ""
subtract $idx $len &tempidx
subtract $tempidx 1 &tempidx
@subloop
equal $tempidx $idx &store
if $store %continue
add $tempidx 1 &tempidx
getstrcharat $str $tempidx &store
add $tempstr $store &tempstr
jump %subloop
@continue
equal $tempstr $instr &store
if $store %decrement
add $idx 1 &idx
jump %loop
@decrement
equal $instance 0 &store
if $store %end
subtract $instance 1 &instance
add $idx 1 &idx
jump %loop
@end
subtract $idx $len &idx
return $idx
endfun endfun