加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 00:07:10 所属栏目:大数据 来源:网络整理
导读:我有一个字符串在Lua,并希望迭代其中的个别字符。但没有代码我试过工程和官方手册只显示如何查找和替换子字符串:( str = "abcd"for char in str do -- error print( char )endfor i = 1,str:len() do print( str[ i ] ) -- nilend 解决方法 在lua 5.1中,你
我有一个字符串在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的表达式语法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读