gpt4 book ai didi

Lua中获取utf8字符串长度的方法和自定义函数

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

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

这篇CFSDN的博客文章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

lua 的string库不支持处理utf-8编码的汉字。用lua要处理汉字还是很费劲的.

  。

UTF8的编码规则:

1. 字符的第一个字节范围: 0x00—0x7F(0-127),或者 0xC2—0xF4(194-244); UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致 2. 0xC0, 0xC1,0xF5—0xFF(192, 193 和 245-255)不会出现在UTF8编码中 3. 0x80—0xBF(128-191)只会出现在第二个及随后的编码中(针对多字节编码,如汉字)    这样我们可以利用lua强大的模式匹配,来实现我们要的效果,关键的处理有这么两个: 1. local _, count = string.gsub(str, "[^\128-\193]", ""),用来得到str中的字符数 2. for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do tab[#tab+1] = uchar end,用来把str中的每个字符映射到tab中 。

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

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