我有類似"ABC-DEF"
的字符串,我需要將它們分開"-"
字符,並將這兩個部分分配給一個變量。在Ruby中,我會這樣做:在Lua中用字符分割字符串
a, b = "ABC-DEF".split('-')
顯然,Lua並沒有這麼簡單的方法。經過一番挖掘,我找不到一個簡短而簡潔的方式來實現我所追求的目標。我提到我是Lua的一名完全新手,我需要在Redis的腳本中使用它(所以它應該確實很小,如果可能的話,它是一個班輪)。
我有類似"ABC-DEF"
的字符串,我需要將它們分開"-"
字符,並將這兩個部分分配給一個變量。在Ruby中,我會這樣做:在Lua中用字符分割字符串
a, b = "ABC-DEF".split('-')
顯然,Lua並沒有這麼簡單的方法。經過一番挖掘,我找不到一個簡短而簡潔的方式來實現我所追求的目標。我提到我是Lua的一名完全新手,我需要在Redis的腳本中使用它(所以它應該確實很小,如果可能的話,它是一個班輪)。
使用模式匹配:
a, b = string.match("ABC-DEF", "(.*)%-(.*)")
注意-
是一個神奇的人物,所以它必須與%
轉義。
'local a,b = string.match(「ABC-DEF」,「(。*)% - (。*)」)'會導致a =在redis lua中的「ABC」'和'b =「DEF」'。 –
雖然你當然可以按照俞皓的建議去做,但如果你需要一個可以像Python一樣簡單使用的通用庫,下面的代碼將爲你提供這個。它也會給你一個gsplit()迭代器。
local unpack = table.unpack or unpack
--------------------------------------------------------------------------------
-- Escape special pattern characters in string to be treated as simple characters
--------------------------------------------------------------------------------
local
function escape_magic(s)
local MAGIC_CHARS_SET = '[()%%.[^$%]*+%-?]'
if s == nil then return end
return (s:gsub(MAGIC_CHARS_SET,'%%%1'))
end
--------------------------------------------------------------------------------
-- Returns an iterator to split a string on the given delimiter (comma by default)
--------------------------------------------------------------------------------
function string:gsplit(delimiter)
delimiter = delimiter or ',' --default delimiter is comma
if self:sub(-#delimiter) ~= delimiter then self = self .. delimiter end
return self:gmatch('(.-)'..escape_magic(delimiter))
end
--------------------------------------------------------------------------------
-- Split a string on the given delimiter (comma by default)
--------------------------------------------------------------------------------
function string:split(delimiter,tabled)
tabled = tabled or false --default is unpacked
local ans = {}
for item in self:gsplit(delimiter) do
ans[ #ans+1 ] = item
end
if tabled then return ans end
return unpack(ans)
end
重複https://stackoverflow.com/questions/1426954/split-string-in-lua ..? –
http://lua-users.org/wiki/SplitJoin –