gpt4 book ai didi

Lua获取utf8字符串长度和字符串截取并用...代替

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Lua获取utf8字符串长度和字符串截取并用...代替由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、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

  。

2、截取给定字符串的部分长度,超出部分用省略号“.”替换 。

复制代码 代码如下:

--@brief 切割字符串,并用“...”替换尾部
--@param sName:要切割的字符串
--@return nMaxCount,字符串上限,中文字为2的倍数
--@param nShowCount:显示英文字个数,中文字为2的倍数,可为空
--@note         函数实现:截取字符串一部分,剩余用“...”替换

  。

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 。

最后此篇关于Lua获取utf8字符串长度和字符串截取并用...代替的文章就讲到这里了,如果你想了解更多关于Lua获取utf8字符串长度和字符串截取并用...代替的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com