RosettaCodeData/Task/Tokenize-a-string-with-escaping/J/tokenize-a-string-with-escaping-2.j

11 lines
291 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
tokenize2=: tokenize=:3 :0
'^|' tokenize2 y NB. task default escape and separator
:
'ESC SEP'=. x
E=. 18 b./\.&.|.ESC=y NB. escape positions
S=. (SEP=y)>_1}.0,E NB. separator positions
K=. -.E+.S NB. keep positions
T=. (#y){. 1,}.S NB. token beginnings
(T<;.1 K)#&.>T<;.1 y
)