This is a small purebasic function used to retrieve a string between two known characters, it also allows you to provide a starting position.
Procedure.s str_between_char( *Source.CHARACTER, First.C, Last.C, StartAt.i = 0 )
Define.i dwLength
*Source + (StartAt * SizeOf(CHARACTER))
Repeat
If *Source\c = First ; If this character matches the First character
*Source + SizeOf(CHARACTER)
dwLength = *Source
Repeat ; Repeat until we find an occurrance with the Last character
*Source + SizeOf(CHARACTER)
Until *Source\c = Last
dwLength = (*Source - dwLength)
ProcedureReturn PeekS( *Source - dwLength, dwLength ) ; Peek the output string
Break
EndIf
*Source + SizeOf(CHARACTER)
Until *Source\c = #Null
EndProcedure
Example use:
Define.s str = "dd(hallo)xyz(a)"
Define.s result = str_between_char(@str, '(', ')', 2)
Debug result
If you’re working on a parser or similar project this will sure come in handy.
Enjoy!