ruby-on-rails - content_tag link_to rails
Verificar si una cadena contiene una de mĂșltiples subcadenas (7)
Tengo una variable de cadena larga y quiero averiguar si contiene una de dos subcadenas.
p.ej
haystack = ''this one is pretty long''
needle1 = ''whatever''
needle2 = ''pretty''
Ahora necesitaría una disyunción como esta que no funciona en Ruby:
if haystack.include? needle1 || haystack.include? needle2
puts "needle found within haystack"
end
Estaba intentando encontrar una forma simple de buscar múltiples subcadenas en una matriz y terminar con la siguiente que también responde la pregunta. He agregado la respuesta, ya que sé que muchos geeks consideran otras respuestas y no solo la aceptada.
haystack.select { |str| str.include?(needle1) || str.include?(needle2) }
y si busca parcialmente:
haystack.select { |str| str.include?(''wat'') || str.include?(''pre'') }
Para una serie de subcadenas a buscar recomendaría
needles = ["whatever", "pretty"]
if haystack.match(Regexp.union(needles))
...
end
Para verificar si contiene al menos una de dos subcadenas:
haystack[/whatever|pretty/]
Devuelve el primer resultado encontrado
Prueba parens en la expresión:
haystack.include?(needle1) || haystack.include?(needle2)
Puedes hacer una coincidencia de expresiones regulares utilizando |
(o):
if haystack.match? /whatever|pretty|something/
…
end
O si tus cadenas están en una matriz:
if haystack.match? Regex.union(strings)
…
end
(haystack.split & [needle1, needle2]).any?
Para usar la coma como separador: split('','')
[needle1, needle2].any? { |needle| haystack.include? needle }