lua table 上的子字符串的最后 4 个字符

Substring on lua table for last 4 characters

我正在尝试获取 lua table 中字段的最后 4 个字符。

我的 csv 文件如下所示: 1234、http://myurl.com

local list = {}
for line in io.lines("x.csv") do
    local mediaId, fURL = line:match("([^,]+),([^,]+)")
    list[#list + 1] = { mediaId = mediaId, fURL = fURL }
end

print(list[1].mediaId) -- 1234
print(list[1].fURL) -- http://myurl.com
print(list[1].fURL.tostring().sub(list[1].fURL.tostring().len() - 4)) -- expected result: last 4 character of string, eg. .com

我现在需要的是最后4个字符。它们是什么并不重要,不需要只检查最后 4 个字符。我上面的代码导致 "attempt to call field 'tostring' (a nil value)" 错误。 我需要做什么来纠正它?

您可以将它们作为新密钥存储在table中(使用的函数是string.sub):

for line in io.lines("x.csv") do
    local mediaId, fURL = line:match("([^,]+),([^,]+)")
    list[#list + 1] = { mediaId = mediaId, fURL = fURL, last = fURL:sub(-4) }
end

并在循环外引用它们:

print( list[1].last )
local bla = string.len(tostring(list[1].fURL)) - 3
print(string.sub(tostring(list[1].fURL), bla)) -- last 4 character, yes minus 3 = last 4 character.