• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua中获取utf8字符串长度的方法和自定义函数

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

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua 中文字符 utf8,lua utf8,lua utf8转gbk,lua gbk utf8,lua 字符串长度等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

--- 获取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
</div>
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中

</div>

您可能想查找下面的文章:

  • Lua中获取utf8字符串长度的方法和自定义函数
  • Lua性能优化技巧(一):前言

相关文章

  • Lua中的模块(module)和包(package)详解
  • Lua元表与元方法实例讲解
  • 举例说明Lua中元表和元方法的使用
  • Lua中调用函数使用点号和冒号的区别
  • Lua的协程(coroutine)简介
  • 使用Lua来扩展C++程序的方法
  • lua文件操作详解
  • Lua中的string库和强大的模式匹配学习笔记
  • 让你的python代码更加pythonic(简练、明确、优雅)
  • Lua获取utf8字符串长度和字符串截取并用...代替

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua之wrap函数用法示例
    • C++遍历Lua table的方法实例
    • 使用lua实现split字符串分隔
    • Lua编程示例(一):select、debug、可变参数、table操作、error
    • Lua面向对象之类和继承浅析
    • lua脚本实现自动生成APK包
    • Lua中的模块(module)和包(package)详解
    • Lua中的闭包学习笔记
    • Lua之协同程序coroutine代码实例
    • C++中调用Lua配置文件和响应函数示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有