首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何迭代Lua字符串中的单个字符?

如何迭代Lua字符串中的单个字符?
EN

Stack Overflow用户
提问于 2009-05-06 10:55:37
回答 4查看 104.1K关注 0票数 102

我在Lua中有一个字符串,想要迭代其中的单个字符。但我尝试过的代码都不起作用,官方手册只展示了如何查找和替换子字符串:

代码语言:javascript
复制
str = "abcd"
for char in str do -- error
  print( char )
end

for i = 1, str:len() do
  print( str[ i ] ) -- nil
end
EN

回答 4

Stack Overflow用户

发布于 2015-12-24 18:30:06

根据手头的任务,使用string.byte可能会更容易一些。这也是最快的方法,因为它避免了创建新的子字符串,这要归功于每个新字符串的哈希和检查它是否已知,而这些子字符串在Lua中恰好是非常昂贵的。您可以使用相同的string.byte预先计算要查找的符号的代码,以保持可读性和可移植性。

代码语言:javascript
复制
local str = "ab/cd/ef"
local target = string.byte("/")
for idx = 1, #str do
   if str:byte(idx) == target then
      print("Target found at:", idx)
   end
end
票数 13
EN

Stack Overflow用户

发布于 2009-05-06 13:05:41

如果您使用的是Lua 5,请尝试:

代码语言:javascript
复制
for i = 1, string.len(str) do
    print( string.sub(str, i, i) )
end
票数 11
EN

Stack Overflow用户

发布于 2020-10-27 04:04:45

迭代以构造字符串,并使用load()将此字符串作为表返回...

代码语言:javascript
复制
itab=function(char)
local result
for i=1,#char do
 if i==1 then
  result=string.format('%s','{')
 end
result=result..string.format('\'%s\'',char:sub(i,i))
 if i~=#char then
  result=result..string.format('%s',',')
 end
 if i==#char then
  result=result..string.format('%s','}')
 end
end
 return load('return '..result)()
end

dump=function(dump)
for key,value in pairs(dump) do
 io.write(string.format("%s=%s=%s\n",key,type(value),value))
end
end

res=itab('KOYAANISQATSI')

dump(res)

把..。

代码语言:javascript
复制
1=string=K
2=string=O
3=string=Y
4=string=A
5=string=A
6=string=N
7=string=I
8=string=S
9=string=Q
10=string=A
11=string=T
12=string=S
13=string=I
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/829063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档