s$ is the string to scan, d$ is the delimiter string and p is the position in s$. First position is 1
Code: Select all
Procedure.s ParseString(s$,d$,p)
If p < 1:ProcedureReturn s$:EndIf
If Len(s$) = 0:ProcedureReturn "":EndIf
If Len(d$) = 0:ProcedureReturn s$:EndIf
If p > CountString(s$,d$):ProcedureReturn "":EndIf
Protected last,Position,i = 1
Repeat
Last = Position
Position = FindString(s$ , d$, Position + 1)
If Position > 0
If i = p
If last = 0
ProcedureReturn Left(s$,Position-1)
Else
ProcedureReturn Mid(s$,last + 1, Position-last)
EndIf
EndIf
EndIf
i = i + 1
Until Not Position
ProcedureReturn ""
EndProcedure
s$ is the string to scan, d$ is the delimiter string. You must define Splits$() (or whatever you want to call it) NewList Splits$() before calling SplitString
Code: Select all
Procedure SplitString(s$,d$,List Splits$())
ClearList(Splits$())
If Len(s$) = 0:ProcedureReturn:EndIf
If Len(d$) = 0:ProcedureReturn:EndIf
Protected last,Position,i = 1
Repeat
Last = Position
Position = FindString(S$ , d$, Position + 1)
If Position > 0
AddElement(Splits$())
If last = 0
Splits$() = Left(s$,Position-1)
Else
Splits$() = Mid(s$,last + 1, Position-last)
EndIf
EndIf
Until Not Position
ResetList(Splits$())
EndProcedure


