RosettaCodeData/Task/Tokenize-a-string-with-esca.../Icon/tokenize-a-string-with-esca...

22 lines
403 B
Plaintext

procedure main()
str := "one^|uno||three^^^^|four^^^|^cuatro|"
every write("\"",!tokenize(str,"|","^"),"\"")
end
procedure tokenize(str,sep,esc)
ret := []
token := ""
cse := cset(sep||esc)
str ?
repeat{
token ||:= tab(i := (upto(cse) | 0))
if i = 0 then return put(ret,token)
move(1)
if str[i] == sep then{
put(ret,token)
token := ""
}else
token ||:= move(1)
}
end