Lua字符串比较异常:向量输入确认逻辑首次触发失败
Lua字符串比较导致输入验证异常的解决办法
问题原因
你遇到的问题核心是输入的字符串包含隐藏的空白字符(比如换行符、空格),导致和预期的"y"/"n"严格匹配失败,触发错误提示。而用"0"/"1"时,输入的数字字符串没有多余空白,所以匹配正常。
解决方案
1. 去除输入前后的空白字符
Lua 5.4及以上版本自带string.trim()函数,低版本可以自己实现:
-- Lua 5.4+ 写法 local ans = string.trim(io.read()) -- 低版本兼容的trim函数 local function trim(str) return str:match("^%s*(.*%S)") or "" end local ans = trim(io.read()) -- 之后再做匹配 if ans == "y" then -- 你的逻辑 elseif ans == "n" then -- 你的逻辑 else print("y/n only!") end
2. 忽略大小写匹配
如果允许用户输入Y/N,可以转成统一大小写后再比较:
local ans = string.lower(string.trim(io.read())) if ans == "y" then -- 逻辑 elseif ans == "n" then -- 逻辑 else print("y/n only!") end
3. 用模式匹配宽松验证
不需要严格完全匹配,只要输入以y/Y或n/N开头就认可:
local ans = io.read() if ans:match("^[Yy]") then -- 确认逻辑 elseif ans:match("^[Nn]") then -- 取消逻辑 else print("y/n only!") end
内容的提问来源于stack exchange,提问作者scrapjab
相关产品推荐
相关产品推荐

