在Lua表中获取最后4个字符的子串

我正在尝试获取lua表中一个字段的最后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)) -- 期望结果:字符串的后4个字符,例如 .com

现在我需要的是最后的4个字符。无论这些字符是什么,没有必要进行任何检查,只需要最后的4个字符。我上面的代码会导致“尝试调用字段'tostring' (一个空值)”错误。 我需要做什么才能纠正它?

点赞
用户1190388
用户1190388

你可以将它们存储为表中的新键(使用的函数是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 )
2015-04-20 13:27:18
用户4096653
用户4096653
```lua
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.

```lua
local bla = string.len(tostring(list[1].fURL)) - 3        -- 获取字符串长度并减去 3
print(string.sub(tostring(list[1].fURL), bla))            -- 切割字符串并输出最后四个字符,因为前面减去了 3
2015-04-20 13:37:33