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

在Lua中使用string.gmatch()拆分字符串

发布时间:2020-12-15 00:16:56 所属栏目:大数据 来源:网络整理
导读:这里有一些讨论和实用函数,用于分割字符串,但是我需要一个特殊的单行程来完成一个非常简单的任务. 我有以下字符串: local s = "one;two;;four" 我想把它拆分为“;”.我想最终得到{“one”,“two”,“”,“four”}作为回报. 所以我试着这样做: local s = "o
这里有一些讨论和实用函数,用于分割字符串,但是我需要一个特殊的单行程来完成一个非常简单的任务.

我有以下字符串:

local s = "one;two;;four"

我想把它拆分为“;”.我想最终得到{“one”,“two”,“”,“four”}作为回报.

所以我试着这样做:

local s = "one;two;;four"

local words = {}
for w in s:gmatch("([^;]*)") do table.insert(words,w) end

但结果(单词表)是{“one”,“four”,“”}.那肯定不是我想要的.

现在,正如我所说,这里有一些关于分裂字符串的讨论,但它们中有“冗长”的功能,我需要一些简洁的东西.我需要这个代码用于一个程序,在那里我展示了Lua的优点,如果我添加一个冗长的函数来做一些如此微不足道的事情,它将违背我.

解决方法

local s = "one;two;;four"
local words = {}
for w in (s .. ";"):gmatch("([^;]*);") do 
    table.insert(words,w) 
end

通过添加一个额外的;在字符串的末尾,字符串现在变为“one; two ;; four;”,您要捕获的所有内容都可以使用模式“([^;] *);”匹配:没有;接着是;(贪心).

测试:

for n,w in ipairs(words) do
    print(n .. ": " .. w)
end

输出:

1: one
2: two
3:
4: four

(编辑:李大同)

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

    推荐文章
      热点阅读