在Lua中将字符串转换为数字

C. *_*ang 2 lua

在Lua中,我有一个像这样的字符串:231 523 402 1223 9043 -1 4它包含多个用空格分隔的数字。现在,我想将其转换为整数的向量,如何使用一些内置函数来实现它?

Ada*_*dam 5

您可以将string.gsub与函数一起用作替换值。

如果repl是一个函数,则每次匹配时都会调用此函数,所有捕获的子字符串均按顺序传递为参数。

用法示例如下所示:

local function tovector(s)
    local t = {}
    s:gsub('%-?%d+', function(n) t[#t+1] = tonumber(n) end)
    return t
end
Run Code Online (Sandbox Code Playgroud)

直接使用它:

local t = tovector '231 523 402 1223 9043 -1 4'
Run Code Online (Sandbox Code Playgroud)

结果是一个向量(或Lua术语中的序列):

for i,v in ipairs(t) do print(i,v) end

1       231
2       523
3       402
4       1223
5       9043
6       -1
7       4
Run Code Online (Sandbox Code Playgroud)