网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 Lua获取utf8字符串长度和字符串截取并用...代替
内容
    这篇文章主要介绍了Lua获取utf8字符串长度和字符串截取并用...代替,本文直接给出两个函数的实现代码,需要的朋友可以参考下
    一、LUA获取utf8字符串长度
    代码如下:
    --- 获取utf8编码字符串正确长度的方法
    -- @param str
    -- @return number
    function utfstrlen(str)
    local len = #str;
    local left = len;
    local cnt = 0;
    local arr={0,0xc0,0xe0,0xf0,0xf8,0xfc};
    while left ~= 0 do
    local tmp=string.byte(str,-left);
    local i=#arr;
    while arr[i] do
    if tmp>=arr[i] then left=left-i;break;end
    i=i-1;
    end
    cnt=cnt+1;
    end
    return cnt;
    end
    二、截取给定字符串的部分长度,超出部分用省略号“.”替换
    代码如下:
    切割字符串,并用“...”替换尾部
    sName:要切割的字符串
    nMaxCount,字符串上限,中文字为2的倍数
    nShowCount:显示英文字个数,中文字为2的倍数,可为空
    函数实现:截取字符串一部分,剩余用“...”替换
    function GetShortName(sName,nMaxCount,nShowCount)
    if sName == nil or nMaxCount == nil then
    return
    end
    local sStr = sName
    local tCode = {}
    local tName = {}
    local nLenInByte = #sStr
    local nWidth = 0
    if nShowCount == nil then
    nShowCount = nMaxCount - 3
    end
    for i=1,nLenInByte do
    local curByte = string.byte(sStr, i)
    local byteCount = 0;
    if curByte>0 and curByte<=127 then
    byteCount = 1
    elseif curByte>=192 and curByte<223 then
    byteCount = 2
    elseif curByte>=224 and curByte<239 then
    byteCount = 3
    elseif curByte>=240 and curByte<=247 then
    byteCount = 4
    end
    local char = nil
    if byteCount > 0 then
    char = string.sub(sStr, i, i+byteCount-1)
    i = i + byteCount -1
    end
    if byteCount == 1 then
    nWidth = nWidth + 1
    table.insert(tName,char)
    table.insert(tCode,1)
    elseif byteCount > 1 then
    nWidth = nWidth + 2
    table.insert(tName,char)
    table.insert(tCode,2)
    end
    end
    if nWidth > nMaxCount then
    local _sN = ""
    local _len = 0
    for i=1,#tName do
    _sN = _sN .. tName[i]
    _len = _len + tCode[i]
    if _len >= nShowCount then
    break
    end
    end
    sName = _sN .. "..."
    end
    return sName
    end
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/24 5:02:38