如何检查子串

时间:2014-05-15 12:57:15

标签: string lua substring

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"这样的表,但同样的问题。

2 个答案:

答案 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"))