Lua中的音标字体

我正在使用 Lua 制作一个关于音标学习游戏的应用程序,我有一个问题需要检查音标转录的长度,并需要检查它是否与我所输入的匹配,但我发现所有的音标的长度都是 2,无法与我所输入的匹配,例如:

print(string.len("ð")       -- 输出:2
print(string.len("pɛt"))    -- 输出:4
print(string.sub("pɛt",3))  -- 输出:›t

我应该怎么做?

点赞
用户107090
用户107090

string 库不支持 UTF-8 字符串。请尝试使用 utf8 库。

2015-04-04 11:10:56
用户3325075
用户3325075
Lua 5.2 并没有原生支持非 ASCII 字符串。
Lua 5.3 支持基本的 UTF-8,所以你可以尝试使用 Lua 5.3
2015-04-04 11:22:38
用户2905753
用户2905753

感谢 lhf 和 Cinch 的提示,通过你们,我终于想出了如何做,代码如下,请让我知道是否还有其他更聪明的方法。

a.通过计算音标转录的长度,我仅仅减去了原始长度和非单字节字母的长度:

string.len("pɛt")-string.len("pɛt", "[^\128-\193]", ""))

b.通过检查它是否与我输入的相同,我使用了 string.gfind:

for tempLetter in string.gfind("pɛt", "([%z\1-\127\194-\244][\128-\191]*)") do
        if theLetterITyped == tempLetter then
              --content
        else
              --content
        end
    end
2015-04-05 17:27:21