RosettaCodeData/Task/Tokenize-a-string-with-escaping/Nim/tokenize-a-string-with-escaping.nim
2023-07-01 13:44:08 -04:00

18 lines
410 B
Nim

import streams
proc tokenize(s: Stream, sep: static[char] = '|', esc: static[char] = '^'): seq[string] =
var buff = ""
while not s.atEnd():
let c = s.readChar
case c
of sep:
result.add buff
buff = ""
of esc:
buff.add s.readChar
else:
buff.add c
result.add buff
for i, s in tokenize(newStringStream "one^|uno||three^^^^|four^^^|^cuatro|"):
echo i, ":", s