【发布时间】:2013-11-23 08:19:39
【问题描述】:
这里有一些讨论和实用函数,用于拆分字符串,但我需要一个临时单线来完成一项非常简单的任务。
我有以下字符串:
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
但是结果(words 表)是{ "one", "", "two", "", "", "four", "" }。这当然不是我想要的。
现在,正如我所说,这里有一些关于拆分字符串的讨论,但它们中有“冗长”的功能,我需要一些简洁的东西。我需要这个代码来展示我展示 Lua 优点的程序,如果我添加一个冗长的函数来做一些如此微不足道的事情,它就会对我不利。
【问题讨论】:
-
[^;]*非常乐意匹配零分号。因此,lua 每次到达分隔符时都会匹配零个分号。您可以使用 "[^;]+" 来获得更好的结果,但是 lua-users wiki 的 lua-users.org/wiki/SplitJoin 页面在讨论拆分字符串时运行的时间与它一样长。
标签: string lua lua-patterns