string - Lua,前进到字母表的下一个字母

标签 string lua

令我感到非常惊讶的是,我没有在 StackOverflow 或 Lua.org 上找到明确的答案。网站

如果

  • 我的 Lua 变量包含一个字母,并且
  • 我想要字母表中的下一个字母

那么,我如何操纵该变量从“J”更改为“K”?

我查看了The String LibraryLua.Org网站,并且在任何页面上都没有看到“字母”一词

例如

 --------------------------------------------------
 --                                              --
 --    Func Name: Alphabetic_Advance_By_1        --
 --                                              --
 --    On Entry:  The_Letter contains one        --
 --               character. It must be a        --
 --               letter in the alphabet.        --
 --                                              --
 --    On Exit:   The caller receives the        --
 --               next letter                    --
 --                                              --
 --               e.g.,                          --
 --                                              --
 --               A will return B                --
 --               B will return C                --
 --               C will return D                --
 --                                              --
 --               X will return Y                --
 --               Y will return Z                --
 --               Z will return A                --
 --                                              --
 --                                              --
 --                                              --
 --------------------------------------------------



 function Alphabetic_Advance_By_1(The_Letter)

 local Temp_Letter

 Temp_Letter = string.upper(The_Letter)

 -- okay, what goes here ???


 return(The_Answer)

 end

最佳答案

I am very surprised that I did not find this explicitly answered here in StackOverflow, or on the Lua.org Website

它与您的特定 Lua 版本中使用的字符编码有关,因此它超出了 Lua 语言本身的范围。

您可以使用string.byte来获取字符串的字节。您可以使用 string.char 将字节转换为字符串。

Lua 不保证 'A' 到 'Z' 的字符代码是连续的,因为 C 不保证。您甚至无法确定每个都是用单个字节编码的。如果您的实现使用 ASCII,则每个字符都由单个字节值表示,您可以加 1 得到下一个字母,但您不应该依赖于此。例如,如果 Temp_Letter < 'Z':

 The_Answer = string.char(Temp_Letter:byte() + 1)

这是一种不依赖字符编码的方法:

local alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local index = alphabet:find(Temp_Letter)
if index then
    index = (index % #alphabet) + 1 -- move to next letter, wrapping at end
    TheAnswer = alphabet:sub(index, index)
end

关于string - Lua,前进到字母表的下一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23120266/

相关文章:

python - 如何将 pandas 数据框的数据类型更改为具有定义格式的字符串?

lua - 意外的 lua 模式匹配结果

c++ - float 到 _bstr_t

c++ - 这是将字符串作为参数传递给函数的内存有效方法。?

c++ - 删除参数中包含字符串的文件

Lua:ANSI 转义模式

lua - 如何使用 lua 关键字作为表键?

c# - 在 C# 应用程序中嵌入 LuaInterface 性能很慢?

c++ - 如何从 C++ 读取 Lua 表返回值

swift - 从另一个 TableView 添加行 - Swift