Lua中如何提取字符串单个字符?下标访问尝试无效
如何在Lua中提取字符串的单个字符
嘿,我来帮你搞定这个问题!首先得纠正你原来代码里的两个关键问题:
- 你写的
ABC没有加引号,Lua会把它当成一个变量名,而不是字符串字面量。如果这个变量没定义,tostring(ABC)会把它转成字符串"nil",这肯定不是你想要的。正确的字符串写法应该是"ABC"。 - 在Lua 5.1及更早的版本里,字符串不能直接用
x[1]这种方括号索引来获取单个字符,得用专门的字符串处理函数。
接下来给你几种可行的实现方式:
方法1:用string.sub逐个提取字符
这是兼容所有Lua版本的通用方法,通过string.sub(或冒号语法str:sub)截取单个字符:
-- 先正确定义字符串 local str = "ABC" -- 提取每个位置的字符 local charA = str:sub(1, 1) -- 得到 "A" local charB = str:sub(2, 2) -- 得到 "B" local charC = str:sub(3, 3) -- 得到 "C"
方法2:遍历字符串,把所有字符存入表中
如果需要一次性提取所有字符并保存起来,可以用循环遍历字符串的长度:
local str = "ABC" local charList = {} -- #str 可以获取字符串的长度 for i = 1, #str do table.insert(charList, str:sub(i, i)) end -- 现在 charList 就是 {"A", "B", "C"}
方法3:Lua 5.3+ 直接用方括号索引
从Lua 5.3开始,字符串支持像数组一样用方括号直接访问单个字符,写法更简洁:
local str = "ABC" local charA = str[1] -- "A" local charB = str[2] -- "B" local charC = str[3] -- "C"
你可以根据自己使用的Lua版本选择合适的方法,记得先把字符串用引号括起来哦!
内容的提问来源于stack exchange,提问作者Kevin Gregory
相关产品推荐
相关产品推荐

