【问题标题】:Converting a number to its alphabetical counterpart in lua将数字转换为 lua 中对应的字母
【发布时间】:2021-07-25 16:44:17
【问题描述】:

我正在尝试制作一个 lua 脚本,它输入以逗号分隔的数字,并将它们转换为字母,因此 1 = 等,但是我还没有找到一种方法来轻松地做到这一点,因为字符串 libray 输出= 97,所以我现在不知道该去哪里,有什么帮助吗?

【问题讨论】:

    标签: lua


    【解决方案1】:

    您可以使用string.bytestring.char 函数:

    string.char(97) == "a"
    string.byte("a") == 97
    

    如果你想从 "a" (97) 开始,那么只需减去那个数字:

    local function ord(char)
      return string.byte(char)-string.byte("a")+1
    end
    

    这将为“a”返回 1,为“b”返回 2,依此类推。你可以让它以类似的方式处理“A”、“B”等。

    如果您需要数字到字符,那么这样的方法可能会起作用:

    local function char(num)
      return string.char(string.byte("a")+num-1)
    end
    

    【讨论】:

    • 这与我想要的相反,我想要数字到字符而不是字符到数字。
    • 使用我列出的功能想出它应该不难;添加到答案中(假设 num 字符“a”从 1 开始)。
    【解决方案2】:

    仅考虑 ascii table. 中 a-z 的起始值

    function convert(...)
        local ar = {...}
        local con = {}
        for i,v in pairs(ar) do
            table.insert(con, ("").char(v+96))
        end
        return con;
    end
    
    for i,v in pairs(convert(1,2,3,4)) do
        print(v)
    end
    

    【讨论】:

    • 好的,所以我有text = io.read() function convert(...) local ar = {...} local con = {} for i,v in pairs(ar) do table.insert(con, ("").char(v+96)) end return con; end for i,v in pairs(convert(text)) do print(v) end 但是如果我输入 1,2 就会出错
    • 所以我想我需要做的是将 io.read() 输出的字符串转换为几个参数?我不知道
    【解决方案3】:

    除了这些答案之外,您可以将每个字母存储在一个表中并简单地索引该表:

    local letters = {'a','b','c'} --Finish
    
    print(letters[1], letters[2], letters[3])
    

    【讨论】:

      【解决方案4】:

      按如下方式定义您的编码:

      encoding = [[abc...]]
      

      按你想要的任何顺序。 然后按如下方式使用

      function char(i)
         return encoding:sub(i,i)
      end
      

      如果数字列表在表格中,那么您可以使用

      function decode(t)
         for i=1,#t do t[i]=char(t[i]) end
         return table.concat(t)
      end
      

      您也可以将解码保存在表格中:

      char = {}
      for i=1,#encoding do char[i]=encoding:sub(i,i) end
      

      并在decode 中使用char[t[i]]

      【讨论】:

      • 所以我有encoding = [[abcdefghijklmnopqrstuvwxyz]] i = io.read() function char(i) return encoding:sub(i,i) end function decode(t) for i=1,#t do t[i]=char[i] end return table.concat(t) end print(char(i)) 问题是如果我输入 1,2 它会出错
      猜你喜欢
      • 1970-01-01
      • 2014-06-05
      • 2023-03-24
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多