Как разбить определенные слова в Луа - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь разделить это утверждение в Lua

sendex,000D6F0011BA2D60,fb,btn,1,on,100,null

Мне нужен вывод следующим образом:

Mac:000D6F0011BA2D60
Value:1
command:on
value:100

как разделить и получить значения?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Если ваш ввод точно такой же, как вы описали, код ниже работает:

s="sendex,000D6F0011BA2D60,fb,btn,1,on,100,null"
Mac,Value,command,value = s:match(".-,(.-),.-,.-,(.-),(.-),(.-),")
print(Mac,Value,command,value)

Он использует не жадный шаблон .-, чтобы разбить ввод на поля.Он также фиксирует соответствующие поля.

0 голосов
/ 17 декабря 2018
local input = "sendex,000D6F0011BA2D60,fb,btn,1,on,100,null"
local buffer = {}
for word in input:gmatch('[^,]+') do
  table.insert(buffer, word)
  --print(word) -- uncomment this to see the words as they are being matched ;)
end
print("Mac:"..buffer[2])
print("Value:"..buffer[5])
...

Полное объяснение того, что делает string.gmatch, см. В справочнике Lua .Подводя итог, он перебирает строку и ищет шаблон, в данном случае [^,]+, что означает все группы из 1 или более символов, которые не являются запятыми.Каждый раз, когда он находит указанный шаблон, он что-то с ним делает и продолжает поиск.

...