Lua从值中找到一个键

时间:2011-10-28 04:14:26

标签: lua

我正在处理这个问题:

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

   nchar = (chars[$name])+1

变量$ name将为我提供一个我登录的字符串,在这种情况下:"Nigo Astran" 如果我在nchar,则"2"的值为"Nigo Astran",依此类推。我相信你明白了。

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

nchar2时,它应该以{{1​​}}为关键字。我只是没有得到钥匙的价值。

3 个答案:

答案 0 :(得分:10)

如果您发现自己需要从表的值中获取密钥,请考虑将表反转为

function table_invert(t)
   local s={}
   for k,v in pairs(t) do
     s[v]=k
   end
   return s
end

答案 1 :(得分:3)

我认为没有什么比使用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" )

答案 2 :(得分:-1)

最好的方法就是这样

 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