通过模式找到诸如 Hi 之类的单词或主要像 dön 这样的名称的最佳方法是什么,其中包含特殊的字符。它们是可选的,因此显然应该使用“?” 但我不知道用什么控制代码来找到它们。
我基本上想确保我得到的单词中可能包含 unicode 字符,但没有别的。所以 dön 会很好,但没有其他特殊字符或数字之类的括号。
通过模式找到诸如 Hi 之类的单词或主要像 dön 这样的名称的最佳方法是什么,其中包含特殊的字符。它们是可选的,因此显然应该使用“?” 但我不知道用什么控制代码来找到它们。
我基本上想确保我得到的单词中可能包含 unicode 字符,但没有别的。所以 dön 会很好,但没有其他特殊字符或数字之类的括号。
根据Unicode 的 Lua 指南,“Lua 的模式匹配工具逐字节工作。一般来说,这不适用于 Unicode 模式匹配,尽管有些事情可以按你的意愿工作”。这意味着最好的选择可能是遍历每个字符并确定它是否是有效字母。要遍历字符串中的每个 unicode 字符:
for character in string.gmatch(myString, "([%z\1-\127\194-\244][\128-\191]*)") do
-- Do something with the character
end
myString
请注意,如果不是有效的 unicode,此方法将不起作用。要检查字符是否是您想要的字符,最好简单地列出您不想要的所有字符的列表,然后排除它们:
local notAllowed = ":()[]{}+_-=\|`~,.<>/?!@#$%^&*"
local isValid = true
for character in string.gmatch(myString, "([%z\1-\127\194-\244][\128-\191]*)") do
if notAllowed:find(character) then
isValid = false
break
end
end
希望这有帮助。