如何迭代单个字符在Lua字符串?

前端之家收集整理的这篇文章主要介绍了如何迭代单个字符在Lua字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个字符串在Lua,并希望迭代其中的个别字符。但没有代码我试过工程和官方手册只显示如何查找和替换子字符串:(
str = "abcd"
for char in str do -- error
  print( char )
end

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

解决方法

在lua 5.1中,你可以用几种方法迭代字符串的字符。

基本循环是:

for i = 1,#str do
    local c = str:sub(i,i)
    -- do something with c
end

但是使用带有string.gmatch()的模式来获得字符上的迭代器可能更有效:

for c in str:gmatch"." do
    -- do something with c
end

或者甚至使用string.gsub()为每个char调用一个函数

str:gsub(".",function(c)
    -- do something with c
end)

在上面的所有内容中,我已经利用了字符串模块被设置为所有字符串值的Metatable的事实,所以它的函数可以使用:符号调用成员。我也使用(新到5.1,IIRC)#来获取字符串长度。

对于你的应用程序的最佳答案取决于很多因素,如果性能是重要的,基准是你的朋友。

您可能想要评估为什么需要迭代字符,并查看已绑定到Lua的正则表达式模块之一,或者现代方法查看Roberto的lpeg模块,该模块实现了解析Lua的表达式语法。

原文链接:https://www.f2er.com/lua/275165.html

猜你在找的Lua相关文章