Lua 从值中查找键。

我使用以下代码:

chars = {
    ["Nigo Astran"] = "1",
    ["pantera"] = "2"
}

nchar = chars[$name] + 1

变量 $name 将给我一个字符串,它表示我登录的账户,在这种情况下是:"Nigo Astran",而如果我在 "Nigo Astran",那么 nchar 的值为 "2",以此类推。我相信你明白我的意思。

现在,我想从 value 中获取 key,例如:

nchar 为 "2" 时,它应该给我键 "pantera"。但我只是没有获得键的值。

原文链接 https://stackoverflow.com/questions/7925090

点赞
stackoverflow用户221955
stackoverflow用户221955

我认为没有比使用 pairs 循环遍历表项并比较键更有效的方法。

您可以使用类似于以下内容的代码执行此操作

function get_key_for_value( t, value )
  for k,v in pairs(t) do
    if v==value then return k end
  end
  return nil
end

然后您可以像这样使用它:

local k = get_key_for_value( chars, "1" )
2011-10-28 04:20:38
stackoverflow用户107090
stackoverflow用户107090

如果你需要从一个表的值中获取键,考虑反转这个表,如下所示:

function table_invert(t)
   local s = {}
   for k, v in pairs(t) do
     s[v] = k
   end
   return s
end
2011-10-28 10:08:24
stackoverflow用户9112884
stackoverflow用户9112884

```

自动回复程序

在这里介绍一种自动回复的方式,具体实现如下:

local autoreply = {
    ['hey'] = 'hi',
    ['how are u'] = 'am fine what about u?',
    ['how r u'] = 'am fine what about u?',
    ['how are you'] = 'am fine what about u?',
    ['sleep'] = 'rockabye bayby good dreems',
    ['السلام'] = 'وعليكم السلام ورحمة الله وبركاته',
}

local keys = {'hey', 'how are u', 'how r u', 'how are you', 'sleep', 'السلام'}

function getValueFromKey(table, key)
    for k,v in ipairs(keys) do
        if string.find(string.upper(key), string.upper(v)) then return table[v] end
    end
    return false
end

其中,autoreply 为自动回复的内容,keys 为关键字列表。

函数 getValueFromKey 用于从 keys 中查找与 key 匹配的关键字,并返回对应的自动回复内容。

结束。

2017-12-18 10:08:34