a="hello"
b="hi"
io.write("enter a or b or both:")
c=io.read()
if c=="hello" then
print(b)
elseif c=="hi" then
print (a)
elseif c~=a or b then
print ("unknown word")
end
问题在于我同时写了hello hi
,它显示:unknown word
。
我该如何解决这个问题?
我也尝试使用像d={},d.a="hello",d.b="hi"
这样的表,但同样的问题。
答案 0 :(得分:3)
==
用于测试相等性。但字符串"hello hi"
既不等于"hello"
也不等于"hi"
。要测试它是否包含子字符串,请使用模式匹配:
local found = false
if c:match("hello") then
print(a)
found = true
end
if c:match("hi") then
print(b)
found = true
end
if not found then
print ("unknown word")
end
答案 1 :(得分:1)
如果你想比较单词而不是子串,试试这个:
function normalize(x)
return " "..x.." "
end
mywords=normalize("hello hi")
function ok(x)
return mywords:match(normalize(x))~=nil
end
print(ok("hello"))
print(ok("hi"))
print(ok("high"))