校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中獲取utf8字符串長度的方法和自定義函數

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字符串長度的方法和自定義函數》,本文關鍵詞  Lua,中,獲取,utf8,字符串,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中獲取utf8字符串長度的方法和自定義函數》相關的同類信息!
  • 本頁收集關于Lua中獲取utf8字符串長度的方法和自定義函數的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 普宁市| 石柱| 甘孜县| 利津县| 中西区| 莆田市| 万年县| 扎鲁特旗| 丰城市| 陇西县| 周宁县| 西盟| 太谷县| 祁连县| 巴林左旗| 东至县| 金塔县| 仙居县| 成武县| 寿光市| 鹤峰县| 铁岭县| 中方县| 黔西县| 遵义县| 湄潭县| 潍坊市| 错那县| 保亭| 江门市| 闻喜县| 来安县| 苏尼特右旗| 衡阳县| 本溪| 三亚市| 昔阳县| 罗平县| 壶关县| 永和县| 宁阳县|