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

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

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)

在上面的字符串中,我只想得到括号里面的所有内容,但不想包括任何空格。我正在尝试获得以下输出,没有括号中的任何空格。

"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"

请帮助我解决这个问题。

点赞
用户752976
用户752976

你误解了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

这个方法可行,但远非我所说的“优雅的”解决方案。

2016-09-27 08:31:44
用户6834680
用户6834680
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", "")删除这些字符串内的所有空格。

2016-09-27 08:48:26