面对lua代码中的问题

时间:2016-09-29 14:28:22

标签: lua lua-table luafilesystem

如何匹配“单词”混合括号分隔的字符串,因为它们是由空格分隔的。 EG:

split_words_and_parenthesis("1791 (AR6K Async) S 2 ") --> {"1791","AR6K Async","S","2"}

这是我的尝试:     str =“1791(AR6K Async)S 2”

for val in str:gmatch("%S+") do
  if str:gmatch("(" )then
    str:gsub("%b()" , function(s)  val=s end)
    print(val)
  else
    print(val)
  end
end

output:

(AR6K Async)                
(AR6K Async)             
(AR6K Async)             
(AR6K Async)       
(AR6K Async)

1 个答案:

答案 0 :(得分:0)

如果您知道格式,可以使用string.match解决:

failed()

另一种通用的解决方案,允许可变数量的条目(试一试:只需在lua解释器中过去):

str = "1791 (AR6K Async) S 2 "

s1 = str:match("(%d%d%d%d)%s%(.*%)%s.+%s.+")
s2 = str:match("%d%d%d%d%s(%(.*%))%s.+%s.+")
s3 = str:match("%d%d%d%d%s%(.*%)%s(.+)%s.+")
s4 = str:match("%d%d%d%d%s%(.*%)%s.+%s(.+)")

print(s1)
print(s2)
print(s3)
print(s4)