我尝试使用find
函数检查字符串"ll"
中字符串"hello"
的出现次数,但它返回"ll"
而不是true
或false
:
"This prints 'll'"
print find "hello" "ll"
REBOL的标准库是否有任何函数来检查字符串是否包含另一个字符串?
答案 0 :(得分:5)
试试这个
>> print found? find "hello" "ll"
true
>> print found? find "hello" "abc"
false
答案 1 :(得分:1)
@ShixinZeng是否正确有一个FOUND?在Rebol。但是,它只是定义为:
found?: function [
"Returns TRUE if value is not NONE."
value
] [
not none? :value
]
因为它相当于not none?
......你可以写:
>> print not none? find "hello" "ll"
true
>> print not none? find "hello" "abc"
false
或者如果你想要另一个偏见:
>> print none? find "hello" "ll"
false
>> print none? find "hello" "abc"
true
旨在帮助您在使用FIND时提高可读性。但是,我不喜欢它,因为它在不与FIND一起使用时会产生混乱的行为,例如
>> if found? 1 + 2 [print "Well this is odd..."]
Well this is odd...
由于您可以在带有IF和UNLESS和EITHER的条件表达式中使用FIND的结果,因此您并不经常需要它...除非您将结果分配给您真正想要的变量是布尔值。在这种情况下,我不介意使用NOT NONE?还是没有?酌情。
在我看来,失去了FOUND?从核心来看会很好。
答案 2 :(得分:1)
如先前的答案中所述查找为您提供了可以在条件表达式中使用的结果。
>> either find "hello" "ll" [
[ print "hit"
[ ] [
[ print "no hit"
[ ]
hit
或以更反叛的方式
>> print either find "hello" "ll" [ "hit"] [ "no hit"]
hit
但您也可以在结果上使用 to-logic ,为您提供 true 或 false
>> print to-logic find "hello" "ll"
true
>> print find "hello" "lzl"
none
>> print to-logic find "hello" "lzl"
false