local function hasValue(tbl, str)
local f = false
for ind, val in pairs(tbl) do
if type(val) == "table" then
hasValue(val, str)
else
if type(val) == "string" then
if string.gsub(val, '^%s*(.-)%s*$', '%1') == string.gsub(str, '^%s*(.-)%s*$', '%1') then
f = true
end
end
end
end
return f
end
function split(inputstr, sep) sep=sep or '%s'
local t={}
for field, s in string.gmatch(inputstr, "([^"..sep.."]*)("..sep.."?)") do
field = string.gsub(field, '^%s*(.-)%s*$', '%1')
table.insert(t, field)
if s=="" then
return t
end
end
end
function tableAsString(tbl)
toReturn = "{"
for ind, val in pairs(tbl) do
if type(val) == "table" then
toReturn = toReturn .. (type(ind) == "number" and "" or ind .. "=") .. tableAsString(val) .. ","
else
local newVal
if type(val) == "string" then
newVal = "\"" .. val .. "\""
else
newVal = val
end
toReturn = toReturn .. (type(ind) == "number" and "" or ind .. "=") .. newVal .. ","
end
end
toReturn = toReturn:sub(1,-2) .. "}" -- remove trailing "," and close table
return toReturn
end
local b = {}
local a = {}
local str = 'alpha, bravo, charlie, delta'
b = split(str, ',')
table.insert(a, b)
local str = 'apple, kiwi, banana, pear'
b = split(str, ',')
table.insert(a, b)
local str = 'carrot, brocoli, cabage, potatoe'
b = split(str, ',')
table.insert(a, b)
print(tableAsString(a))
print(hasValue(a, 'brocoli'))
bG9jYWwgZnVuY3Rpb24gaGFzVmFsdWUodGJsLCBzdHIpCgkKCWxvY2FsIGYgPSBmYWxzZQoJCgkJZm9yIGluZCwgdmFsIGluIHBhaXJzKHRibCkgZG8KCQkKCQkJCWlmIHR5cGUodmFsKSA9PSAidGFibGUiIHRoZW4KCQkJCgkJCQkgCWhhc1ZhbHVlKHZhbCwgc3RyKQoKCQkJCWVsc2UKCQkJCQkJaWYgdHlwZSh2YWwpID09ICJzdHJpbmciIHRoZW4KCQkJIAoJCQkJCQkJaWYgc3RyaW5nLmdzdWIodmFsLCAnXiVzKiguLSklcyokJywgJyUxJykgPT0gc3RyaW5nLmdzdWIoc3RyLCAnXiVzKiguLSklcyokJywgJyUxJykgdGhlbiAKCQkJCQkJCQlmID0gdHJ1ZQoJCQkJCQkJZW5kCgoJCQkJCQllbmQKCQkJCWVuZAoJCWVuZAoJCglyZXR1cm4gZgoJCmVuZAoKZnVuY3Rpb24gc3BsaXQoaW5wdXRzdHIsIHNlcCkgc2VwPXNlcCBvciAnJXMnIAoJCglsb2NhbCB0PXt9ICAKCQoJZm9yIGZpZWxkLCBzIGluIHN0cmluZy5nbWF0Y2goaW5wdXRzdHIsICIoW14iLi5zZXAuLiJdKikoIi4uc2VwLi4iPykiKSBkbyAKCQkKCQlmaWVsZCA9IHN0cmluZy5nc3ViKGZpZWxkLCAnXiVzKiguLSklcyokJywgJyUxJykKCQkKCQl0YWJsZS5pbnNlcnQodCwgZmllbGQpICAKCQkKCQlpZiBzPT0iIiB0aGVuIAoJCQkKCQkJcmV0dXJuIHQgCgkJZW5kIAoJZW5kIAoKZW5kCgoJZnVuY3Rpb24gdGFibGVBc1N0cmluZyh0YmwpCgl0b1JldHVybiA9ICJ7IgoJZm9yIGluZCwgdmFsIGluIHBhaXJzKHRibCkgZG8KCQlpZiB0eXBlKHZhbCkgPT0gInRhYmxlIiB0aGVuCgkJCXRvUmV0dXJuID0gdG9SZXR1cm4gLi4gKHR5cGUoaW5kKSA9PSAibnVtYmVyIiBhbmQgIiIgb3IgaW5kIC4uICI9IikgLi4gdGFibGVBc1N0cmluZyh2YWwpIC4uICIsIgoJCWVsc2UKCQkJbG9jYWwgbmV3VmFsCgkJCWlmIHR5cGUodmFsKSA9PSAic3RyaW5nIiB0aGVuCgkJCQluZXdWYWwgPSAiXCIiIC4uIHZhbCAuLiAiXCIiCgkJCWVsc2UKCQkJCW5ld1ZhbCA9IHZhbAoJCQllbmQKCQkJdG9SZXR1cm4gPSB0b1JldHVybiAuLiAodHlwZShpbmQpID09ICJudW1iZXIiIGFuZCAiIiBvciBpbmQgLi4gIj0iKSAuLiBuZXdWYWwgLi4gIiwiCgkJZW5kCgllbmQKCQoJdG9SZXR1cm4gPSB0b1JldHVybjpzdWIoMSwtMikgLi4gIn0iIC0tIHJlbW92ZSB0cmFpbGluZyAiLCIgYW5kIGNsb3NlIHRhYmxlCgkKCXJldHVybiB0b1JldHVybgplbmQKCgoJbG9jYWwgYiA9IHt9Cglsb2NhbCBhID0ge30KCQoJbG9jYWwgc3RyID0gJ2FscGhhLCBicmF2bywgY2hhcmxpZSwgZGVsdGEnCgkgYiA9IHNwbGl0KHN0ciwgJywnKQoJdGFibGUuaW5zZXJ0KGEsIGIpCgkKCWxvY2FsIHN0ciA9ICdhcHBsZSwga2l3aSwgYmFuYW5hLCBwZWFyJwoJIGIgPSBzcGxpdChzdHIsICcsJykKCXRhYmxlLmluc2VydChhLCBiKQoJCglsb2NhbCBzdHIgPSAnY2Fycm90LCBicm9jb2xpLCBjYWJhZ2UsIHBvdGF0b2UnCgkgYiA9IHNwbGl0KHN0ciwgJywnKQoJdGFibGUuaW5zZXJ0KGEsIGIpCgkKCXByaW50KHRhYmxlQXNTdHJpbmcoYSkpCglwcmludChoYXNWYWx1ZShhLCAnYnJvY29saScpKQoJCg==