当answering this question时,我编写了以下代码以遍历字符串中的UTF-8字节序列:
local str = "KORYTNAČKA"
for c in str:gmatch("[\0-\x7F\xC2-\xF4][\x80-\xBF]*") do
print(c)
end
它在Lua 5.2中有效,但在Lua 5.1中,它报告一个错误:
格式错误(缺少“]”)
我记得在Lua 5.1中,不支持字符串文字
\xhh
,因此我将其修改为:local str = "KORYTNAČKA"
for c in str:gmatch("[\0-\127\194-\244][\128-\191]*") do
print(c)
end
但是错误保持不变,如何解决?
最佳答案
请参见Lua 5.1 manual on patterns.
A pattern cannot contain embedded zeros. Use %z instead.
在Lua 5.2中,已对此进行了更改,以便可以改为使用
\0
,但对于5.1则不能。只需将%z
添加到第一组并将第一个范围更改为\1-\127
。