我已经使用Google搜索,但我只是没有得到它。看起来像这样一个简单的功能,但当然Lua没有它。Lua需要以逗号分隔
在Python,我会做
string = "cat,dog"
one, two = string.split(",")
,然后我将有两个变量,一个=猫。两个=狗
我该如何做到这一点在Lua!?
我已经使用Google搜索,但我只是没有得到它。看起来像这样一个简单的功能,但当然Lua没有它。Lua需要以逗号分隔
在Python,我会做
string = "cat,dog"
one, two = string.split(",")
,然后我将有两个变量,一个=猫。两个=狗
我该如何做到这一点在Lua!?
如果可以使用图书馆,答案是(经常在Lua中)到use Penlight。
如果手电筒笔是你太重了,你只是想用一个单逗号分割的字符串,就像在你的榜样,你可以做这样的事情:
string = "cat,dog"
one, two = string:match("([^,]+),([^,]+)")
试一下这个
str = 'cat,dog'
for word in string.gmatch(str, '([^,]+)') do
print(word)
end
“[^,]”的意思是“一切,但逗号,+号表示‘一个或多个字符’。括号创建捕获(不是真的需要在这种情况下) 。
添加此分割功能在你的页面的顶部:
function string:split(inSplitPattern, outResults)
if not outResults then
outResults = { }
end
local theStart = 1
local theSplitStart, theSplitEnd = string.find(self, inSplitPattern, theStart)
while theSplitStart do
table.insert(outResults, string.sub(self, theStart, theSplitStart-1))
theStart = theSplitEnd + 1
theSplitStart, theSplitEnd = string.find(self, inSplitPattern, theStart)
end
table.insert(outResults, string.sub(self, theStart))
return outResults
end
然后执行以下操作:
local myString = "Flintstone, Fred, 101 Rockledge, Bedrock, 98775, 555-555-1212"
local myTable = myString:split(", ")
for i = 1, #myTable do
print(myTable[i]) -- This will give your needed output
end
欲了解更多信息,请访问:Tutorial: Lua String Magic
保持编码............... :)
像string.split()
功能在很大程度上是不必要的在Lua中,因为您可以 在LPEG中表示字符串操作。 如果您仍然需要专用功能,方便的方法是 定义一个拆分器工厂(mk_splitter()
in below snippet) 然后您可以从中导出自定义拆分器。
local lpeg = require "lpeg"
local lpegmatch = lpeg.match
local P, C = lpeg.P, lpeg.C
local mk_splitter = function (pat)
if not pat then
return
end
pat = P (pat)
local nopat = 1 - pat
local splitter = (pat + C (nopat^1))^0
return function (str)
return lpegmatch (splitter, str)
end
end
使用LPEG的优点是该函数接受 都有效Lua中的字符串和模式作为参数。
这里是你将如何使用它来创建一个函数,在,
字符 分割字符串:
commasplitter = mk_splitter ","
print (commasplitter [[foo, bar, baz, xyzzy,]])
print (commasplitter [[a,b,c,d,e,f,g,h]])
这是我该怎么办就链接到MediaWiki:
str = "cat,dog"
local result = mw.text.split(str,"%s*,%s*")
-- result[0] will give "cat", result[1] will give "dog"
实际上,如果你不在乎空间,你可以使用:
str = "cat,dog"
local result = mw.text.split(str,",")
-- result[0] will give "cat", result[1] will give "dog"
- 像C strtok的,分割在一个更定界符(发现每串不含有任何的分隔符)
function split(source, delimiters)
local elements = {}
local pattern = '([^'..delimiters..']+)'
string.gsub(source, pattern, function(value) elements[#elements + 1] = value; end);
return elements
end
- 例子:var =元素分割(“再见#再见,错过$美国@饼”,“ ,#$ @“) - 返回”bye“”bye“”miss“”american“”pie“
可能重复[Split string in lua?](http://stackoverflow.com/questions/1426954) /分割字符串在-LUA) – hjpotter92