【发布时间】:2020-07-25 13:02:34
【问题描述】:
**这个错误看起来像是 UNITY 中的一个错误。该代码在桌面模拟器(我正在修改的游戏)之外似乎可以正常工作
我将其标记为已解决,但如果需要,将其留给模组删除,因为该代码可能仍然对其他人谷歌搜索有用。 **
我正在尝试处理一个包含几行的大字符串.. 并且希望将它找到的所有重音字符转换为标准字符。我有一些我从网上得到的代码,但是代码中有一个小错误,我不明白它是如何工作的,所以如果你能的话,需要一些关于这个问题的帮助。
function stripChars(str)
local tableAccents = {}
tableAccents["à"] = "a"
tableAccents["á"] = "a"
tableAccents["â"] = "a"
tableAccents["ã"] = "a"
tableAccents["ä"] = "a"
tableAccents["ç"] = "c"
tableAccents["è"] = "e"
tableAccents["é"] = "e"
tableAccents["ê"] = "e"
tableAccents["ë"] = "e"
tableAccents["ì"] = "i"
tableAccents["í"] = "i"
tableAccents["î"] = "i"
tableAccents["ï"] = "i"
tableAccents["ñ"] = "n"
tableAccents["ò"] = "o"
tableAccents["ó"] = "o"
tableAccents["ô"] = "o"
tableAccents["õ"] = "o"
tableAccents["ö"] = "o"
tableAccents["ù"] = "u"
tableAccents["ú"] = "u"
tableAccents["û"] = "u"
tableAccents["ü"] = "u"
tableAccents["ý"] = "y"
tableAccents["ÿ"] = "y"
tableAccents["À"] = "A"
tableAccents["Á"] = "A"
tableAccents["Â"] = "A"
tableAccents["Ã"] = "A"
tableAccents["Ä"] = "A"
tableAccents["Ç"] = "C"
tableAccents["È"] = "E"
tableAccents["É"] = "E"
tableAccents["Ê"] = "E"
tableAccents["Ë"] = "E"
tableAccents["Ì"] = "I"
tableAccents["Í"] = "I"
tableAccents["Î"] = "I"
tableAccents["Ï"] = "I"
tableAccents["Ñ"] = "N"
tableAccents["Ò"] = "O"
tableAccents["Ó"] = "O"
tableAccents["Ô"] = "O"
tableAccents["Õ"] = "O"
tableAccents["Ö"] = "O"
tableAccents["Ù"] = "U"
tableAccents["Ú"] = "U"
tableAccents["Û"] = "U"
tableAccents["Ü"] = "U"
tableAccents["Ý"] = "Y"
local normalizedString = ''
for strChar in string.gmatch(str, "([%z\1-\127\194-\244][\128-\191]*)") do
if tableAccents[strChar] ~= nil then
normalizedString = normalizedString..tableAccents[strChar]
else
normalizedString = normalizedString..strChar
end
end
return normalizedString
end
这段代码似乎工作得很好,但它不适用于 u 类型的字符......所以......
local test = "ù, ú, û, ü"
print(stripChars(test)) -- Prints (,,,)
test = "à, á, â, ã, ä"
print(stripChars(test)) -- Prints (a, a, a, a, a)
有什么想法吗?..我认为这与模式有关..但我不知道它在第一个位置是如何工作的。 (见大字符表下的代码块底部)
【问题讨论】:
-
当我在 Lua 5.3 中按原样复制+粘贴您的代码时,我无法重现该问题(我得到了普通的
us)。编码中的某些内容可能在 Stackoverflow 中丢失。你能把test解释为一个字节序列吗?例如,使用print(test:byte(1, #test))