• 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脚本,lua脚本编辑器,lua脚本教程,lua脚本解密工具,lua脚本是什么等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、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
</div>

二、截取给定字符串的部分长度,超出部分用省略号“.”替换
--@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
</div>

</div>

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

  • Lua脚本语言基本语法快速入门教程
  • 浅析Lua中的迭代器
  • Lua脚本实现递归删除一个文件夹
  • Lua基本语法
  • Lua中遍历文件操作代码实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • Lua中的类编程代码实例
  • Lua中写排序算法实例(选择排序算法)
  • 使用Lua作为C语言项目的配置文件实例
  • C语言中调用Lua函数实例

相关文章

  • Lua中获取table长度的方法
  • Lua判断数据类型的方法
  • Lua字符串库(string库)学习笔记
  • Lua中的__index方法详解
  • Lua之字符串格式化例子和常用格式化参数介绍
  • Lua编程中的一些基本语法整理
  • Lua时间转化的几个小例子
  • Lua中的迭代器浅析
  • Lua在各个操作系统中的开发环境配置教程
  • 详解Lua中if ... else语句的使用方法

文章分类

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

最近更新的内容

    • Lua之wrap函数用法示例
    • 举例说明Lua中元表和元方法的使用
    • Lua中的变量和流控制入门学习
    • Lua编程示例(三):稀疏表、双端队列、格式化输出、表和循环表的格式化输出
    • vs2012 error c4996: This function or variable may be unsafe
    • Lua学习笔记之数据结构
    • Lua性能优化技巧(一):前言
    • Lua面向对象之多重继承、私密性详解
    • Lua实现split函数
    • 举例简介Lua中函数的基本用法

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

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