\define subStr(input, start, end)<$set name=len filter='[<__end__>subtract<__start__>]'><$list filter='[<__input__>split[]butfirst<__start__>first<len>join[]]'>
</$list></$set>\end
<<subStr """hello""" 1 4>>
\define substr() [split[]butfirst<start>first<len>join[]]
<$vars start=2 len=4>
<$list filter='[[some string thing]subfilter<substr>]'>
</$list>
</$vars>
Using add/remove prefix and suffix addresses some cases and those commonly faced manipulating titles.
Regex is also a friend in string manipulation.
Regards
Tony
\define substr(string, start, length)<$list filter="[<__string__>!is[blank]]+[<__start__>!is[blank]]" variable=ignore><$vars Length={{{ [[$length$]!is[blank]then[$length$]]~[[$string$]length[]] }}} ><$text text={{{ [<__string__>split[]butfirst<__start__>first<Length>join[]] }}} /></$vars></$list> \end
<<substr "This_is_a_Test" 1 3>>
<<substr "This_is_a_Test" 5>>
<<substr "This_is_a_Test" -5>>
<<substr "This_is_a_Test" -10 6>>
\define substr(string, start, length)
<$vars Length={{{ [[$length$]!is[blank]then[$length$]]~[[$string$]length[]] }}} >
<$text text={{{ [<__string__>split[]butfirst<__start__>first<Length>join[]] }}} />
</$vars>
\end
\define substr(string, start:0, length)
<$vars Length={{{ [[$length$]!is[blank]then[$length$]]~[[$string$]length[]] }}} ><$text text={{{ [<__string__>split[]butfirst<__start__>first<Length>join[]] }}} /></$vars>
\end
# <<substr>># <<substr string:"Test">># <<substr start:1>># <<substr length:2>># <<substr string:"Test" length:2>># <<substr string:"Test" start:1 length:2>># <<substr string:"Test" start:-4 length:2>>
Tony
Thanks MohammadTony
It took me a while to find out, but filter operators are basically Javascript only. so for future reference, I wrote a fancy substring operator myself. It is available athttps://sw-amt.ws/tiddly/tw-substring.html