如何获取列出表中条目的次数

Posted

技术标签:

【中文标题】如何获取列出表中条目的次数【英文标题】:How can I get the number of times an enttry in a table was listed 【发布时间】:2019-10-20 11:24:49 【问题描述】:

我需要找到一种方法来查看一个条目在表格中列出了多少次。

我曾尝试查看其他代码以寻求帮助,并在网上查看示例无济于事

local pattern = "(.+)%s?-%s?(.+)"

local table = "Cald_fan:1", "SomePerson:2", "Cald_fan:3","anotherPerson:4"

for i,v in pairs(table) do
    local UserId, t = string.match(v, pattern)

    for i,v in next,UserId do
        --I have tried something like this
    end
end

据说 Cald_fan 被列出了 2 次​​p>

【问题讨论】:

【参考方案1】:

这样的事情应该可以工作:

local pattern = "(.+)%s*:%s*(%d+)"
local tbl = "Cald_fan:1", "SomePerson:2", "Cald_fan:3","anotherPerson:4"
local counts = 

for i,v in pairs(tbl) do
    local UserId, t = string.match(v, pattern)
    counts[UserId] = 1 + (counts[UserId] or 0)
end
print(counts['Cald_fan']) -- 2

我将 table 重命名为 tbl (因为使用 table 变量会使 table.* 函数不可用)并修复了模式(你有未转义的 '-' ,而你的字符串有 ':') .

【讨论】:

【参考方案2】:

如果表格条目的格式一致,您可以简单地拆分字符串并将组件用作计数器映射中的键。

看起来您的表格条目被格式化为“[player_name]:[index]”,但看起来您并不关心索引。但是,如果“:”将出现在每个表条目中,您就可以编写一个非常可靠的搜索模式。你可以试试这样的:

-- use a list of entries with the format <player_name>:<some_number>
local entries = "Cald_fan:1", "SomePerson:2", "Cald_fan:3","anotherPerson:4"
local foundPlayerCount = 

-- iterate over the list of entries
for i,v in ipairs(entries) do
    -- parse out the player name and a number using the pattern :
    -- (.+) = capture any number of characters
    -- :    = match the colon character
    -- (%d+)= capture any number of numbers 
    local playerName, playerIndex = string.match(v, '(.+):(%d+)')

    -- use the playerName as a key to count how many times it appears
    if not foundPlayerCount[playerName] then
        foundPlayerCount[playerName] = 0
    end
    foundPlayerCount[playerName] = foundPlayerCount[playerName] + 1
end

-- print out all the players
for playerName, timesAppeared in pairs(foundPlayerCount) do
    print(string.format("%s was listed %d times", playerName, timesAppeared))
end

如果以后需要做模式匹配,强烈推荐这篇关于lua字符串模式的文章:http://lua-users.org/wiki/PatternsTutorial

希望这会有所帮助!

【讨论】:

以上是关于如何获取列出表中条目的次数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql语句在应用程序(客户端)中获取行号

CakePHP中如何获取表的字段名

如何从条目中获取文本

如何计算 ID 在不同表的列中出现的次数

C ++如何一起使用 std::adjacent 和 std::count_if 来计算向量中条件的出现次数

SQL Server:根据另一个表中条目的频率选择条目