我有一个功能,我需要检查特殊字符,如果找到一个就打破它。
这是我尝试过的。
local text = "h!ello\"wor%ld_t@xt.p^*sp&ki#$te"
if (string.match(text, "&") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "\"") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "#") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "$") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "@") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "%%") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "!") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "^") ~= nil) then
print("Invalid Character \n")
end
if (string.match(text, "*") ~= nil) then
print("Invalid Character \n")
end
我能够成功地做到这一点,但我希望一切都在一条线上。通过Lua编程书,但无法获得。
答案 0 :(得分:3)
像这样:
if text:match '[&"#$@%%!^*]' then
print 'Invalid Character'
end
答案 1 :(得分:3)
要匹配一组字符,您需要使用[set]
符号 1 。
因此,以下内容应该能够满足您的需求并提供更好的失败指示:
local p = string.find(text, '[&"#$@%%!^*]');
if p then
print("Invalid character found at "..p)
end
您甚至可以包含失败的确切字符:
print("Invalid character '"..text:sub(p,p).."' at position "..p)