想要删除Lua中parantheses中字符串之间的空格

时间:2016-09-27 08:26:59

标签: string lua lua-table

我试图删除parantheses中字符串之间的空格。但是它给出了函数的地址。

str = "1791 (AR6K Async) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0"

local word = str:gmatch("%(%S+)%" , "")
print(word)

在上面这个字符串中,我只想要除了paranthesis空间以外的所有东西。我试图得到像下面这样的输出而没有任何空格在paranthesis。

"1791 (AR6KAsync) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0"

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:5)

str = "1791 (AR6K Async) S 2 0 0 0 -1 2129984 0 0 0 0 0 113 0 0 20 0 1 0 2370 0 0 4294967295 0 0 0 0 0 0 0 2147483647 0 3221520956 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0"

str2 = str:gsub("%b()" , function(s) return (s:gsub("%s", "")) end)
print(str2)

说明:
1.使用Lua模式"%b()"遍历括号内的所有字符串 2.使用:gsub("%s", "")

删除这些字符串中的所有空格

答案 1 :(得分:0)

你误解了gmatch的回归;直接来自文档:

  

s:gmatch(pattern)

     

这将返回一个模式查找迭代器。迭代器将搜索传递的字符串,查找您传递的模式的实例。

for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
Hello
Lua
user

然而,由于Lua的模式不是完整的正则表达式,我不确定你想要的是一步到底。这是我得到的:

for word in str:gmatch("%(.*%)") do 
    newWord = word:gsub(" ", "")
    repWord = word:gsub("%)", "")
    repWord = "%" .. repWord .. "%)"
    str = str:gsub(repWord, newWord)
end

这很有效,但远不是我称之为“好”的解决方案。