在 lua 中拆分一次函数
Split once function in lua
我只想拆分一个字符串,所以输出如下所示:
STRING1: STRING.STRING1.STRING2
OUT1: STRING
OUT2: STRING1.STRING2
我尝试制作一个函数,因为我找不到其他人制作的函数,而且它有点管用。出于某种原因,如果您将分隔符设置为 "."
那么该函数将完全停止工作并将默认的开始和结束值设置为 1, 1
因此,我当前的输出是:
STRING1: STRING.STRING1.STRING2
OUT1:
OUT2: TRING.STRING1.STRING2
有谁知道我在这个函数中做错了什么:
function splitOnce(inputstr, sep)
local s, e = inputstr:find(sep)
local t = {}
--print(inputstr)
--print(sep)
--print("start: "..tostring(s)..", end: "..tostring(e))
table.insert(t, inputstr:sub(1, s - 1))
table.insert(t, inputstr:sub(e + 1, -1))
return t
end
您可以使用 match 使用具有 2 个捕获的模式来分隔字符串。
在这里,我使用 (.-)%".. sep .."(.+)
,其中 .-
将捕获分隔符之前的最短字符串,而 .+
将捕获其后剩余的所有内容。
此方法的一个限制是分隔符被转义,因此如果您使用分隔符,例如 d
、w
,或另一个字母,它是模式中的魔术字符,它不会按预期工作,但它应该适用于所有单字符标点符号分隔符。
function splitOnce(inputstr, sep)
local prefix, suffix = inputstr:match("(.-)%".. sep .."(.+)")
local t = {}
print(inputstr)
print(sep)
print("prefix: "..tostring(prefix)..", suffix: "..tostring(suffix))
table.insert(t, prefix)
table.insert(t, suffix)
return t
end
splitOnce("STRING.STRING1.STRING2", ".")
输出
STRING.STRING1.STRING2
.
prefix: STRING, suffix: STRING1.STRING2
我只想拆分一个字符串,所以输出如下所示:
STRING1: STRING.STRING1.STRING2
OUT1: STRING
OUT2: STRING1.STRING2
我尝试制作一个函数,因为我找不到其他人制作的函数,而且它有点管用。出于某种原因,如果您将分隔符设置为 "."
那么该函数将完全停止工作并将默认的开始和结束值设置为 1, 1
因此,我当前的输出是:
STRING1: STRING.STRING1.STRING2
OUT1:
OUT2: TRING.STRING1.STRING2
有谁知道我在这个函数中做错了什么:
function splitOnce(inputstr, sep)
local s, e = inputstr:find(sep)
local t = {}
--print(inputstr)
--print(sep)
--print("start: "..tostring(s)..", end: "..tostring(e))
table.insert(t, inputstr:sub(1, s - 1))
table.insert(t, inputstr:sub(e + 1, -1))
return t
end
您可以使用 match 使用具有 2 个捕获的模式来分隔字符串。
在这里,我使用 (.-)%".. sep .."(.+)
,其中 .-
将捕获分隔符之前的最短字符串,而 .+
将捕获其后剩余的所有内容。
此方法的一个限制是分隔符被转义,因此如果您使用分隔符,例如 d
、w
,或另一个字母,它是模式中的魔术字符,它不会按预期工作,但它应该适用于所有单字符标点符号分隔符。
function splitOnce(inputstr, sep)
local prefix, suffix = inputstr:match("(.-)%".. sep .."(.+)")
local t = {}
print(inputstr)
print(sep)
print("prefix: "..tostring(prefix)..", suffix: "..tostring(suffix))
table.insert(t, prefix)
table.insert(t, suffix)
return t
end
splitOnce("STRING.STRING1.STRING2", ".")
输出
STRING.STRING1.STRING2
.
prefix: STRING, suffix: STRING1.STRING2