我已經使用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