【发布时间】:2017-12-21 12:22:14
【问题描述】:
考虑以下两种情况:
local str1 = "abc"
str1:len 给出 3
local str2 = "£££"
str2:len 给出 6
谁能解释一下?
LuaJit 版本:5.1
【问题讨论】:
-
local str2len = #str2:gsub("[\128-\191]", "")
考虑以下两种情况:
local str1 = "abc"
str1:len 给出 3
local str2 = "£££"
str2:len 给出 6
谁能解释一下?
LuaJit 版本:5.1
【问题讨论】:
local str2len = #str2:gsub("[\128-\191]", "")
Lua中字符串的长度是bytes的个数,而不是chars的个数。
要处理多字节字符集,您需要像 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
结束
【讨论】: