tutorial - ruby wikipedia
¿Hay una forma mejor de verificar cero o longitud== 0 de una cadena en Ruby? (12)
¿Hay alguna forma mejor que la siguiente para verificar si una cadena es nula O tiene una longitud de 0 en Ruby?
if my_string || my_string.length == 0
return true
else
return false
En C # está el práctico
string.IsNullOrEmpty(myString)
¿Algo similar a eso en Ruby?
Comprobar si hay cadenas vacías en Ruby simple mientras se evitan las excepciones de NameError
Aquí hay algunas buenas respuestas, pero no necesita ActiveSupport o parche de monos para abordar el caso de uso común aquí. Por ejemplo:
my_string.to_s.empty? if defined? my_string
Esto "hará lo correcto" si my_string es nulo o una cadena vacía, pero no generará una excepción NameError si my_string no está definido. Esto es generalmente preferible a los más artificiales:
my_string.to_s.empty? rescue NameError
o es un tipo más detallado, porque las excepciones realmente deberían guardarse para cosas que no espera que ocurran. En este caso, aunque podría ser un error común, una variable indefinida no es realmente una circunstancia excepcional, por lo que debe manejarse en consecuencia.
Su experiencia puede ser diferente.
Cada clase tiene un nil?
método:
if a_variable.nil?
# the variable has a nil value
end
Y las cuerdas tienen el empty?
método:
if a_string.empty?
# the string is empty
}
Recuerde que una cadena no es igual a nil
cuando está vacía, entonces, ¿la usa empty?
método para verificar si una cadena está vacía.
Como se dijo aquí, Rails (ActiveSupport) tiene un práctico en blank? método y se implementa de esta manera:
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
Bastante fácil de agregar a cualquier proyecto basado en ruby.
La belleza de esta solución es que funciona de forma auto-mágica no solo para cadenas, sino también para matrices y otros tipos.
Cuando no estoy preocupado por el rendimiento, a menudo uso esto:
if my_string.to_s.empty?
# It''s nil or empty
end
En primer lugar, ten cuidado con ese método:
Como dice Jesse Ezel :
"El método puede parecer conveniente, pero la mayor parte del tiempo he descubierto que esta situación surge al tratar de ocultar errores más profundos.
Su código debe adherirse a un protocolo particular sobre el uso de cadenas, y debe comprender el uso del protocolo en el código de la biblioteca y en el código con el que está trabajando.
El protocolo NullOrEmpty suele ser una solución rápida (por lo que el problema real sigue siendo en otro lugar, y tienes dos protocolos en uso) o es la falta de experiencia en un protocolo particular al implementar un nuevo código (y nuevamente, debes saber qué sus valores de retorno son) ".
Y si aplica parche a la clase String ... ¡asegúrese de que NilClass no haya sido parche tampoco !
class NilClass
def empty?; true; end
end
Konrad Rudolph tiene la respuesta correcta.
Si realmente te molesta, mono parchea la clase String o agrégala a una clase / módulo de tu elección. En realidad, no es una buena práctica cortar los objetos del núcleo del parche a menos que tengas una razón realmente convincente.
class String
def self.nilorempty?(string)
string.nil? || string.empty?
end
end
Entonces puedes hacer String.nilorempty? mystring
String.nilorempty? mystring
Me gusta hacer esto de la siguiente manera (en un entorno que no sea Rails / ActiveSupport):
variable.to_s.empty?
esto funciona porque:
nil.to_s == ""
"".to_s == ""
Otra opción es convertir nil a un resultado vacío sobre la marcha:
(my_string||'''').empty?
Si está dispuesto a requerir ActiveSupport, puede usar el #blank?
método, que se define para NilClass y String.
Una alternativa a la propuesta de jcoby sería:
class NilClass
def nil_or_empty?
true
end
end
class String
def nil_or_empty?
empty?
end
end
variable.blank? lo haré. Devuelve verdadero si la cadena está vacía o si la cadena es nula.
nil?
se puede omitir en contextos booleanos. En general, puede usar esto para replicar el código C #:
return my_string.nil? || my_string.empty?