美文网首页cocos2d
lua 字符串截断接口(含中文截断)

lua 字符串截断接口(含中文截断)

作者: 亮亮同学 | 来源:发表于2018-11-01 17:13 被阅读7次

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

--去掉符号

function Toolkits:filter_spec_chars(s)
    local ss = {}
    local k = 1
    while true do
        if k > #s then break end
        local c = string.byte(s,k)
        if not c then break end
        if c<192 then
            if (c>=48 and c<=57) or (c>= 65 and c<=90) or (c>=97 and c<=122) then
                table.insert(ss, string.char(c))
            end
            k = k + 1
        elseif c<224 then
            k = k + 2
        elseif c<240 then
            if c>=228 and c<=233 then
                local c1 = string.byte(s,k+1)
                local c2 = string.byte(s,k+2)
                if c1 and c2 then
                    local a1,a2,a3,a4 = 128,191,128,191
                    if c == 228 then a1 = 184
                    elseif c == 233 then a2,a4 = 190,c1 ~= 190 and 191 or 165
                    end
                    if c1>=a1 and c1<=a2 and c2>=a3 and c2<=a4 then
                        table.insert(ss, string.char(c,c1,c2))
                    end
                end
            end
            k = k + 3
        elseif c<248 then
            k = k + 4
        elseif c<252 then
            k = k + 5
        elseif c<254 then
            k = k + 6
        end
    end
    local str = table.concat(ss)
--此判断可忽略
------------------------------
    if str == "" then
       str = "*****"
    end
-------------------------------
    return str
end

--截断 字符串

function Toolkits:ghlBranchStr(str)
    local sNum = 0
    local tab = {}
    for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do 
        tab[#tab+1] = uchar
        sNum = sNum + 1
    end
    local resultStr = ""
    ---sNum的值就是你想要的长度  我设置为6
    if sNum >= 6 then
       sNum = 6
    end
    for i=1,sNum do
        resultStr = resultStr..tab[i]
    end
    return resultStr
end

--使用

local  str = "欢迎加入我的技术交流群"
if type(str) == "string" then 
        local str_1 = Toolkits:getInstance():filter_spec_chars(str)
        local str_2 = Toolkits:getInstance():ghlBranchStr(str_1)
        print(str)
 end

相关文章

  • lua 字符串截断接口(含中文截断)

    cocos2d-x技术群新群:117871561c++技术交流群:593010226 --去掉符号 --截断 字符...

  • white-space

    CSS 截断字符串 CSS是实现文字自动截断

  • Design & Coed 7:截断字符串

    截断字符串 Truncate a string 用瑞兹来截断对面的退路) 如果字符串的长度比指定的参数num长,则...

  • 地址栏回传中文问题

    在学习Servlet时想用地址栏传递中文,最后发现中文的参数直接被截断,无法传递到浏览器。为了不让浏览器截断中文参...

  • Truncate a string

    截断字符串 (用瑞兹来截断对面的退路) 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。 切记...

  • FCC-JS-BSA-Truncate a string-截断字

    截断字符串 (用瑞兹来截断对面的退路) 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。 切记...

  • FCC 260 - 截断字符串

    截断字符串 (用瑞兹来截断对面的退路)如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。切记,插...

  • 截断字符串

    如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。 切记,插入到字符串尾部的三个点号也会计入字符...

  • Flutter实现字符串显示不全时中间显示...

    Flutter中当字符串过长显示不下时会默认的帮我们截断,截断的类型有 类型中的ellipsis省略是尾部省略,没...

  • ios label.lineBreakMode代替方案,实现超出

    自带的lineBreakMode对中文不够友好,截断方式NSLineBreakByWordWrapping,NSL...

网友评论

    本文标题:lua 字符串截断接口(含中文截断)

    本文链接:https://www.haomeiwen.com/subject/zxixxqtx.html