在Lua中计算含中文的字符串的长度

Posted AaronBlog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Lua中计算含中文的字符串的长度相关的知识,希望对你有一定的参考价值。

 1 --[[
 2     @desc: 计算字符串字符个数
 3     author:{author}
 4     time:2017-12-29 16:08:11
 5     --@inputstr: 源字符串
 6     return 字符个数
 7 ]]
 8 function getStringCharCount(str)
 9     local lenInByte = #str
10     local charCount = 0
11     local i = 1
12     while (i <= lenInByte) 
13     do
14         local curByte = string.byte(str, i)
15         local byteCount = 1;
16         if curByte > 0 and curByte <= 127 then
17             byteCount = 1                                               --1字节字符
18         elseif curByte >= 192 and curByte < 223 then
19             byteCount = 2                                               --双字节字符
20         elseif curByte >= 224 and curByte < 239 then
21             byteCount = 3                                               --汉字
22         elseif curByte >= 240 and curByte <= 247 then
23             byteCount = 4                                               --4字节字符
24         end
25         
26         local char = string.sub(str, i, i + byteCount - 1)
27         i = i + byteCount                                               -- 重置下一字节的索引
28         charCount = charCount + 1                                       -- 字符的个数(长度)
29     end
30     return charCount
31 end

 

以上是关于在Lua中计算含中文的字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章

lua怎么判断字符串中含有汉字

在Pandoc lua过滤器中连接字符串片段

第2题——DNA片段

为啥 Lua 的长度 (#) 运算符会返回意外的值?

MySql查询某字段中是否含中文

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试