fork(1) download
  1. local function hasValue(tbl, str)
  2.  
  3. local f = false
  4.  
  5. for ind, val in pairs(tbl) do
  6.  
  7. if type(val) == "table" then
  8.  
  9. hasValue(val, str)
  10.  
  11. else
  12. if type(val) == "string" then
  13.  
  14. if string.gsub(val, '^%s*(.-)%s*$', '%1') == string.gsub(str, '^%s*(.-)%s*$', '%1') then
  15. f = true
  16. end
  17.  
  18. end
  19. end
  20. end
  21.  
  22. return f
  23.  
  24. end
  25.  
  26. function split(inputstr, sep) sep=sep or '%s'
  27.  
  28. local t={}
  29.  
  30. for field, s in string.gmatch(inputstr, "([^"..sep.."]*)("..sep.."?)") do
  31.  
  32. field = string.gsub(field, '^%s*(.-)%s*$', '%1')
  33.  
  34. table.insert(t, field)
  35.  
  36. if s=="" then
  37.  
  38. return t
  39. end
  40. end
  41.  
  42. end
  43.  
  44. function tableAsString(tbl)
  45. toReturn = "{"
  46. for ind, val in pairs(tbl) do
  47. if type(val) == "table" then
  48. toReturn = toReturn .. (type(ind) == "number" and "" or ind .. "=") .. tableAsString(val) .. ","
  49. else
  50. local newVal
  51. if type(val) == "string" then
  52. newVal = "\"" .. val .. "\""
  53. else
  54. newVal = val
  55. end
  56. toReturn = toReturn .. (type(ind) == "number" and "" or ind .. "=") .. newVal .. ","
  57. end
  58. end
  59.  
  60. toReturn = toReturn:sub(1,-2) .. "}" -- remove trailing "," and close table
  61.  
  62. return toReturn
  63. end
  64.  
  65.  
  66. local b = {}
  67. local a = {}
  68.  
  69. local str = 'alpha, bravo, charlie, delta'
  70. b = split(str, ',')
  71. table.insert(a, b)
  72.  
  73. local str = 'apple, kiwi, banana, pear'
  74. b = split(str, ',')
  75. table.insert(a, b)
  76.  
  77. local str = 'carrot, brocoli, cabage, potatoe'
  78. b = split(str, ',')
  79. table.insert(a, b)
  80.  
  81. print(tableAsString(a))
  82. print(hasValue(a, 'brocoli'))
  83.  
  84.  
Success #stdin #stdout 0s 4284KB
stdin
Standard input is empty
stdout
{{"alpha","bravo","charlie","delta"},{"apple","kiwi","banana","pear"},{"carrot","brocoli","cabage","potatoe"}}
false