RosettaCodeData/Task/Multisplit/Phix/multisplit.phix

25 lines
724 B
Plaintext

procedure multisplit(string text, sequence delims)
integer k = 1, kdx
while 1 do
integer kmin = 0
for i=1 to length(delims) do
integer ki = match(delims[i],text,k)
if ki!=0 then
if kmin=0 or ki<kmin then
kmin = ki
kdx = i
end if
end if
end for
string token = text[k..kmin-1]
if kmin=0 then
printf(1,"Token: [%s] at %d\n",{token,k})
exit
end if
printf(1,"Token: [%s] at %d, delimiter (%s) at %d\n",{token,k,delims[kdx],kmin})
k = kmin+length(delims[kdx])
end while
end procedure
multisplit("a!===b=!=c",{"==","!=","="})