Lua:具有特殊字符的String的字符串长度不正确

Posted

tags:

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

考虑以下两种情况:

local str1 = "abc"

str1:len给出3

local str2 = "£££"

str2:len给出6

有人可以解释一下吗?

LuaJit版本:5.1

答案

Lua中的字符串长度是其中的字节数,而不是字符数。

要处理多字节字符集,您需要一个像utf8这样的库,它可以在Lua 5.3中使用。

另一答案

找到了解决方案。

本地函数parse_string(str)

   local ret = ""

   local flag = true

   for i = 1, #str do

             local c = str:sub(i,i)

             local char = string.char(b2i.toint(c, "big", false, 1))


             if char > "127" then

             flag = not flag

             if(flag) then

                 ret = ret .. char

            end

         else

        ret = ret .. char

    end

结束

  return ret

结束

以上是关于Lua:具有特殊字符的String的字符串长度不正确的主要内容,如果未能解决你的问题,请参考以下文章

lua中怎么替换掉字符串中的$^特殊字符?

lua string库

Lua中字符串与模式匹配(正则表达式)

Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符

String 库(上)

具有特殊字符的正则表达式嵌套结构