我有类似"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 –