rails link_to content_tag ruby-on-rails ruby string ruby-2.1

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 }