在lua中拆分一次功能

Posted

技术标签:

【中文标题】在lua中拆分一次功能【英文标题】:Split once function in lua 【发布时间】:2022-01-12 15:08:54 【问题描述】:

我只想将一个字符串拆分一次,所以输出如下所示:

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

【问题讨论】:

find(sep, 1, true) 我试过你的,它返回了nil,并带有分隔符"." string.find("STRING1: STRING.STRING1.STRING2", ".", 1, true) 返回 16 16 而不是 nil 【参考方案1】:

您可以使用match 使用具有 2 个捕获的模式来分隔字符串。 这里我使用(.-)%".. sep .."(.+),其中.- 将捕获分隔符之前的最短字符串,.+ 将捕获它之后的所有内容。

此方法的一个限制是分隔符被转义,因此,如果您使用分隔符,例如 dw,或其他作为魔术字符的字母,它将无法按预期工作,它应该但适用于所有单字符标点分隔符。

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

.

前缀:STRING,后缀:STRING1.STRING2

【讨论】:

以上是关于在lua中拆分一次功能的主要内容,如果未能解决你的问题,请参考以下文章

Lua拆分字符串并将输出放入表中

EXCEL表格有拆分功能吗

GridsearchCV 不检查所有拆分 [关闭]

在第一次出现时拆分

在 iPad 模拟器中滑动和拆分视图

将行拆分为 12 列