RosettaCodeData/Task/Tokenize-a-string-with-escaping/Pluto/tokenize-a-string-with-escaping.pluto
2026-04-30 12:34:36 -04:00

14 lines
572 B
Text

$define SPE = "\u{fffe}" -- unused unicode character in Specials block
$define SPF = "\u{ffff}" -- ditto
local function tokenize(str, sep, esc)
str = str:replace(esc .. esc, SPE):replace(esc .. sep, SPF)
str = (str[-1] == esc) ? (str:sub(1, -2):replace(esc, "") .. esc) : (str:replace(esc, ""))
return str:split(sep):map(|s| -> s:replace(SPE, esc):replace(SPF, sep))
end
local str = "one^|uno||three^^^^|four^^^|^cuatro|"
local sep = "|"
local esc = "^"
local items = tokenize(str, sep, esc)
for items as item do print((item == "") ? "(empty)" : item) end