我只发现这与我正在寻找的内容有关:按字符数拆分字符串,但这对我的意思没有用。
我有一个字符串变量,它是 3 个数字的数量(可以从 000 到 999)。我需要将每个数字(字符)分开并将它们放入表格中。
我正在为一个使用 lua 的游戏模组编程,它有一些额外的功能。如果你能帮助我使用:http ://wiki.multitheftauto.com/wiki/Split会很棒,但任何其他方式也可以。
提前致谢
我只发现这与我正在寻找的内容有关:按字符数拆分字符串,但这对我的意思没有用。
我有一个字符串变量,它是 3 个数字的数量(可以从 000 到 999)。我需要将每个数字(字符)分开并将它们放入表格中。
我正在为一个使用 lua 的游戏模组编程,它有一些额外的功能。如果你能帮助我使用:http ://wiki.multitheftauto.com/wiki/Split会很棒,但任何其他方式也可以。
提前致谢
更正了OP想要问的内容:
要将一个 3 位数的数字拆分为 3 个数字,那就更简单了:
s='429'
c1,c2,c3=s:match('(%d)(%d)(%d)')
t={tonumber(c1),tonumber(c2),tonumber(c3)}
“如何拆分由 3 位数字组成的长字符串”的答案:
这是微不足道的。您可以查看gmatch
参考手册中的功能:
s="123456789"
res={}
for num in s:gmatch('%d%d%d') do
res[#res+1]=tonumber(num)
end
或者如果你不喜欢循环:
res={}
s:gsub('%d%d%d',function(n)res[#res+1]=tonumber(n)end)
我一直在寻找这样的东西,但要避免循环 - 并希望将它作为单线。最终,我从lua-users wiki找到了这个例子:Split Join :
fields = {str:match((str:gsub("[^"..sep.."]*"..sep, "([^"..sep.."]*)"..sep)))}
...这正是我想要的那种语法 - 一个班轮,返回一个表 - 除了,我真的不明白发生了什么:/
尽管如此,经过一番摸索,我设法找到了正确的语法来分割用这个成语写成字符,显然是:
fields = { str:match( (str:gsub(".", "(.)")) ) }
我想,发生的事情基本上是在每个字符 ' ' 周围加上gsub
括号 ' ' - 这样就可以将它们视为一个单独的匹配单元,并将它们“提取”为单独的单元......但我仍然不明白为什么这件作品周围是否有额外的括号。(.)
.
match
str:gsub(".", "(.)")
我用 Lua5.1 对此进行了测试:
str = "a - b - c"
fields = { str:match( (str:gsub(".", "(.)")) ) }
print(table_print(fields))
...table_print
来自lua-users wiki:表序列化;这段代码打印:
"a"
" "
"-"
" "
"b"
" "
"-"
" "
"c"