我在Lua中有一个字符串,想要迭代其中的单个字符。但我尝试过的代码都不起作用,官方手册只展示了如何查找和替换子字符串:
str = "abcd"
for char in str do -- error
print( char )
end
for i = 1, str:len() do
print( str[ i ] ) -- nil
end
发布于 2015-12-24 18:30:06
根据手头的任务,使用string.byte
可能会更容易一些。这也是最快的方法,因为它避免了创建新的子字符串,这要归功于每个新字符串的哈希和检查它是否已知,而这些子字符串在Lua中恰好是非常昂贵的。您可以使用相同的string.byte
预先计算要查找的符号的代码,以保持可读性和可移植性。
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
发布于 2009-05-06 13:05:41
如果您使用的是Lua 5,请尝试:
for i = 1, string.len(str) do
print( string.sub(str, i, i) )
end
发布于 2020-10-27 04:04:45
迭代以构造字符串,并使用load()将此字符串作为表返回...
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)
把..。
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
https://stackoverflow.com/questions/829063
复制相似问题