ruby on rails - تحقق ما إذا كانت سلسلة تحتوي على أحد سلاسل فرعية متعددة




ruby-on-rails string (5)

إذا كان Ruby 2.4 ، فيمكنك إجراء مطابقة ريكس باستخدام | (أو):

if haystack.match? /whatever|pretty|something/
  
end

أو إذا كانت سلاسلك في صفيف:

if haystack.match? Regex.union(strings)
  
end

(بالنسبة إلى Ruby <2.4 ، استخدم .match بدون علامة استفهام.)

لدي متغير سلسلة طويلة وأريد معرفة ما إذا كان يحتوي على واحد من اثنين من سلاسل فرعية.

على سبيل المثال

haystack = 'this one is pretty long'
needle1 = 'whatever'
needle2 = 'pretty'

الآن أحتاج إلى مثل هذا الانفصال الذي لا يعمل في روبي على الرغم من:

if haystack.include? needle1 || haystack.include? needle2
    puts "needle found within haystack"
end

جرب parens في التعبير:

 haystack.include?(needle1) || haystack.include?(needle2)

لمجموعة من سلاسل البحث للبحث عن أوصي

needles = ["whatever", "pretty"]

if haystack.match(Regexp.union(needles))
  ...
end

لمعرفة ما إذا كان يحتوي على واحد على الأقل من اثنين من سلاسل فرعية:

haystack[/whatever|pretty/]

إرجاع النتيجة الأولى التي تم العثور عليها


[needle1, needle2].any? { |needle| haystack.include? needle }




ruby-2.1