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

10-06 12:42
查看更多