34 lines
868 B
Lua
34 lines
868 B
Lua
function tokenise (str, sep, esc)
|
|
local strList, word, escaped, ch = {}, "", false
|
|
for pos = 1, #str do
|
|
ch = str:sub(pos, pos)
|
|
if ch == esc then
|
|
if escaped then
|
|
word = word .. ch
|
|
escaped = false
|
|
else
|
|
escaped = true
|
|
end
|
|
elseif ch == sep then
|
|
if escaped then
|
|
word = word .. ch
|
|
escaped = false
|
|
else
|
|
table.insert(strList, word)
|
|
word = ""
|
|
end
|
|
else
|
|
escaped = false
|
|
word = word .. ch
|
|
end
|
|
end
|
|
table.insert(strList, word)
|
|
return strList
|
|
end
|
|
|
|
local testStr = "one^|uno||three^^^^|four^^^|^cuatro|"
|
|
local testSep, testEsc = "|", "^"
|
|
for k, v in pairs(tokenise(testStr, testSep, testEsc)) do
|
|
print(k, v)
|
|
end
|