亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Lua獲取utf8字符串長度和字符串截取并用...代替

 更新時間:2015年04月20日 11:51:15   投稿:junjie  
這篇文章主要介紹了Lua獲取utf8字符串長度和字符串截取并用...代替,本文直接給出兩個函數(shù)的實現(xiàn)代碼,需要的朋友可以參考下

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

二、截取給定字符串的部分長度,超出部分用省略號“.”替換

復制代碼 代碼如下:

--@brief 切割字符串,并用“...”替換尾部
--@param sName:要切割的字符串
--@return nMaxCount,字符串上限,中文字為2的倍數(shù)
--@param nShowCount:顯示英文字個數(shù),中文字為2的倍數(shù),可為空
--@note         函數(shù)實現(xiàn):截取字符串一部分,剩余用“...”替換

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所有內置函數(shù)羅列

    Lua所有內置函數(shù)羅列

    這篇文章主要介紹了Lua所有內置函數(shù)羅列,本文匯集了Lua腳本語言的所有內置函數(shù),需要的朋友可以參考下
    2015-04-04
  • Lua中的函數(shù)代碼實例

    Lua中的函數(shù)代碼實例

    這篇文章主要介紹了Lua中的函數(shù)代碼實例,本文著重講解函數(shù)的寫法以及一些小知識,需要的朋友可以參考下
    2015-04-04
  • Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹

    Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹

    這篇文章主要介紹了Lua的table庫函數(shù)insert、remove、concat、sort詳細介紹,本文分別給出了這幾個函數(shù)的使用實例,需要的朋友可以參考下
    2015-04-04
  • openresty中使用lua-nginx創(chuàng)建socket實例

    openresty中使用lua-nginx創(chuàng)建socket實例

    這篇文章主要介紹了openresty中使用lua-nginx創(chuàng)建socket實例,本文直接給出代碼實例和運行效果,需要的朋友可以參考下
    2015-04-04
  • Lua中的持久化和序列化詳解

    Lua中的持久化和序列化詳解

    這篇文章主要介紹了Lua中的持久化和序列化詳解,本文詳細講解了Lua中的持久化和序列化,并給出代碼實例,需要的朋友可以參考下
    2014-09-09
  • Lua多行注釋和取消多行注釋的方法

    Lua多行注釋和取消多行注釋的方法

    這篇文章主要介紹了Lua多行注釋和取消多行注釋的方法,本文分別給出代碼示例,請注意細節(jié)~,需要的朋友可以參考下
    2015-06-06
  • Lua中設置table為只讀屬性的方法詳解

    Lua中設置table為只讀屬性的方法詳解

    這篇文章主要給大家介紹了關于Lua中設置table為只讀屬性的方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Lua中函數(shù)的幾個特別之處探究

    Lua中函數(shù)的幾個特別之處探究

    這篇文章主要介紹了Lua中函數(shù)的幾個特別之處探究,本文講解了Lua的函數(shù)創(chuàng)建、函數(shù)的參數(shù)、函數(shù)參數(shù)個數(shù)自適應、函數(shù)多重返回值等內容,需要的朋友可以參考下
    2014-09-09
  • Lua 極簡入門指南(七):面向對象編程

    Lua 極簡入門指南(七):面向對象編程

    這篇文章主要介紹了Lua 極簡入門指南(七):面向對象編程,本文講解了類和繼承的概念,并給出了編程實例,需要的朋友可以參考下
    2014-11-11
  • Lua cjson模塊編譯筆記及錯誤解決方法

    Lua cjson模塊編譯筆記及錯誤解決方法

    這篇文章主要介紹了Lua cjson模塊編譯筆記及錯誤解決方法,本文著重講解報錯的解決方法,修改了Makefile文件解決了錯誤問題,需要的朋友可以參考下
    2015-06-06

最新評論