LUA 应用切割包含特殊开始,结束字符串的内容

应用切割包含特殊开始,结束字符串的内容


-- 获取目标字符串 _sStr(string) 字符串内容 _sFir(string) 开始符号 _sFin(string) 结束符号
-- _speKey(string)是否插入一个特殊key 用于之后反切割 
-- 应用切割表情 "@微笑#内容" ("@微笑#内容","@","#") sResidueContent = "内容" tTakeOutList = {{@微笑#}}
function getTargetStr(_sStr,_sFir,_sFin,_speKey)

    if _sStr then
        local strCopy = _sStr or ""

        local nFsindex, nFeindex = string.find(strCopy, _sFir) -- 开始字符串的检测
        local nSsindex, nSeindex = string.find(strCopy, _sFin) -- 结束字符串的检测
        local strt1 = "" --前部分
        local strt2 = "" --中间部分
        local strt3 = "" --后面部分
        local tTakeOutList = {} --
        local sResidueContent = ""

        if (nFsindex ~= nil and nSsindex ~= nil) then
            while(nFsindex ~= nil and nSsindex ~= nil) do


                --把切割的内容加入列表中
                strt2 =  getMmongStr(strCopy,_sFir,_sFin)
                if strt2 ~= "" then
                    strRemain =  _sFir..strt2.._sFin
                    table.insert(tTakeOutList,strRemain)
                end

                --把前部分切割的内容连起来
                if _speKey then
                    strt1 = strt1..string.sub(strCopy, 1, nFsindex-1).._speKey
                else
                    strt1 = strt1..string.sub(strCopy, 1, nFsindex-1)
                end

                --切割最后部分的内容
                strt3 = string.sub(strCopy, nSeindex+1)

                --保留切割后内容
                strCopy = strt3

                --继续寻找还需不需要再次切割
                nFsindex, nFeindex = string.find(strCopy, _sFir)
                nSsindex, nSeindex = string.find(strCopy, _sFin)


            end
            sResidueContent = strt1..strt3 --合并切割后的内容
        else
            sResidueContent = strCopy --没有可切割的内容
        end
 
        return sResidueContent,tTakeOutList --返回切割剩余的内容,切割掉的内容(列表)

    else
        return ""
    end
end

--获取特殊符号字符串中的内容 _sStr(string) 字符串内容 _sFir(string) 开始符号 _sFin(string) 结束符号
function getMmongStr(_sStr,_sFir,_sFin)
    local sNew = ""
    local index1 = string.find(_sStr,_sFir)
    local index2 = string.find(_sStr,_sFin)
    if index1 and index2 then
         sNew = string.sub(_sStr,index1+1,index2-1)
    end
    return sNew
end





你可能感兴趣的:(lua)