Python具有以下优雅语法,用于检查一个字符串是否是另一个字符串的子字符串:
'ab' in 'abc' # True
Ruby中是否有同等优雅的语法?
我知道"abc".includes? "ab"
Ruby语法,但我想知道逆语法是否也存在(第一个参数是子字符串,第二个是字符串)。
答案 0 :(得分:7)
Ruby标准库中没有这样的方法,但是 Rails ActiveSupport提供了#.in?
方法:
1.9.3-p484 :004 > "ab".in? "abc"
=> true
答案 1 :(得分:4)
定义“优雅”。
这会进行子字符串搜索并返回“hit”(如果找到):
'abc'['ab'] # => "ab"
使用!!
将返回的值转换为true / false,因此"ab"
变为true:
!!'abc'['ab'] # => true
知道如果你想要更接近的东西,添加它是微不足道的:
class String
def in?(other)
!!other[self]
end
end
'ab'.in?('abc') # => true
'ab'.in? 'abc' # => true
或者,使用require 'active_support/core_ext/object/inclusion'
来挑选扩展所有对象以允许in?
的Active Suport定义。见http://edgeguides.rubyonrails.org/active_support_core_extensions.html#in-questionmark。它正在修改所有对象的上行/下行。