Lua: Как проверить, содержит ли строка только цифры и буквы?
Простой вопрос может иметь простой ответ, но мое текущее решение кажется ужасным.
local list = {'?', '!', '@', ... etc)
for i=1, #list do
if string.match(string, strf("%%%s+", list[i])) then
-- string contains characters that are not alphanumeric.
end
end
Есть ли лучший способ сделать это.. может быть, с string.gsub?
Заранее спасибо.
3 ответа
Если вы ищете, содержит ли строка только буквенно-цифровые символы, просто сопоставьте строку со всеми не буквенно-цифровыми символами:
if(str:match("%W")) then
--Improper characters detected.
end
Шаблон %w
соответствует буквенно-цифровым символам По соглашению шаблон, а не заглавные, а прописные, соответствует инверсному набору символов. Так %W
соответствует всем не буквенно-цифровым символам.
Вы можете создать набор совпадений с []
local patt = "[?!@]"
if string.match ( mystr , patt ) then
....
end
Обратите внимание, что классы символов в lua работают только для отдельных символов (не слов). Есть встроенные классы, %W
соответствует не буквенно-цифровым, так что используйте его в качестве ярлыка.
Вы также можете добавить встроенные классы в свой набор:
local patt = "[%Wxyz]"
Будет соответствовать всем не алфавитно-цифровым и символам x
, y
или же z
Я использую этот двухсторонний Lua:
local function envIsAlphaNum(sIn)
return (string.match(sIn,"[^%w]") == nil) end
Когда он обнаруживает не буквенно-цифровой, он возвращает ложь