rails blank ruby conditional testing spaces

blank - La forma más sencilla de verificar si hay espacios en Ruby



blank rails (7)

"mejor" depende del contexto, pero aquí hay una manera simple.

some_string.strip.empty?

Así que sé en ruby ​​que x.nil? probará si x es nulo.

¿Cuál es la forma más sencilla de probar si x es igual a '''', o '''' (dos espacios), o '''' (tres espacios), etc.?

Básicamente, me pregunto cuál es la mejor manera de probar si una variable es todo el espacio en blanco.


Basado en tu comentario, creo que puedes extender la clase String y definir spaces? método de la siguiente manera:

$ irb >> s = " " => " " >> s.spaces? NoMethodError: undefined method `spaces?'' for " ":String from (irb):2 >> class String >> def spaces? >> x = self =~ /^/s+$/ >> x == 0 >> end >> end => nil >> s.spaces? => true >> s = "" => "" >> s.spaces? => false >>


Si x es todo el espacio en blanco, entonces x.strip será la cadena vacía. Así que puedes hacer:

if not x.nil? and x.strip.empty? then puts "It''s all whitespace!" end

Alternativamente, utilizando una expresión regular, x =~ //S/ devolverá false si y solo si x es todos los caracteres de espacio en blanco:

if not (x.nil? or x =~ //S/) then puts "It''s all whitespace!" end


Si está utilizando Rails, simplemente puede usar:

x.blank?

Es seguro llamar a esta opción cuando x es nulo, y devuelve verdadero si x es nulo o todo el espacio en blanco.

Si no está utilizando Rails, puede obtenerlo de la gema de activesupport . Instalar con gem install activesupport . En su archivo, require ''active_support/core_ext para obtener todas las extensiones de soporte activas para las clases base, o require ''active_support/core_ext/string'' para obtener solo las extensiones de la clase String . De cualquier manera, el blank? El método estará disponible después de la necesidad.


Sin embargo, otro :) string.all? { |c| c == '' '' } string.all? { |c| c == '' '' }


a = " " a.each_byte do |x| if x == 32 puts "space" end end