想象一下我在解释器中输入以下代码:
var1 = 'zuuzuu'
现在假设我输入:
var1.find('a')
解释器返回-1。我理解,因为没有找到子串。但请帮助我理解这一点:
var1.find('a' or 'z') #case 1
返回-1
但
var1.find('a' and 'z') #case 2
返回0
根据我脑海中的逻辑,解释器应该为情况2返回-1,因为子字符串'a'AND'z'不在字符串中。在情况1中,应返回0,因为'z'是子字符串。
感谢
答案 0 :(得分:7)
表达式'a' or 'z'
始终会产生'a'
。表达式'a' and 'z'
始终会产生'z'
。它不是某种用于查询容器的DSL,它是一个简单的布尔表达式(并且find
用其结果调用)。如果你想说“字符串中有'a'或'z',你需要做
var1.find('a') != -1 or var.find('z') != -1
对于第二个(字符串中的'a'和'z'):
var1.find('a') != -1 and var.find('z') != -1
答案 1 :(得分:1)
这是因为find
方法实际上不支持or
和and
,它只支持查询字符串。
那么,究竟发生了什么?好吧,事实证明or
和and
是可以对字符串执行的运算符。
'a' and 'z' --> 'z'
'a' or 'z' --> 'a'
所以你有它,你基本上只是正常搜索'a'
和'z'
。