刚遇到一个坑,lua里 string.len() 中文长度算3(不排除某些汉字可能占4的可能)不过计算长度最好还是用 #,少用string.len()
搞了两小时,终于让我找到一个很好的解决办法。
local _,count = string.gsub(text, "[^\128-\193]", "")
匹配128到193以外的字节,然后替换成空字符串。长度直接 count就行。
这样不管是英文还是中文,都算一个长度。
既然标题上是多种,肯定会有另外一种。假设我这个长度只是用做显示呢,中文算2个字符,英文算1个字符呢。
local count = 0
for uchar in string.gfind(text, "([%z\1-\127\194-\244][\128-\191]*)") do
if #uchar ~= 1 then
count = count +2
else
count = count +1
end
end
这样就可以啦,我真佩服我自己的机智