¿Hay una manera 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
end
En C # está lo útil
string.IsNullOrEmpty(myString)
¿Algo similar a eso en Ruby?
my_string || my_string.length == 0
elevará unNoMethodError
if simy_string
es nulo. Creo que quisiste decir:my_string.nil? || my_string.length == 0
!my_string || my_string.length == 0
Respuestas:
Cuando no estoy preocupado por el rendimiento, a menudo uso esto:
Hay varias variaciones, por supuesto ...
fuente
strip
puede ser bastante ineficiente.Si está dispuesto a requerir ActiveSupport, puede usar el
#blank?
método, que se define para NilClass y String.fuente
Me gusta hacer esto de la siguiente manera (en un entorno no Rails / ActiveSupport):
esto funciona porque:
fuente
string.to_s.empty?
funciona para ambosnil
y""
.Una alternativa a la propuesta de jcoby sería:
fuente
Como se dijo aquí antes de que Rails (ActiveSupport) tenga un espacio en blanco útil . método y se implementa así:
Bastante fácil de agregar a cualquier proyecto basado en rubí.
La belleza de esta solución es que funciona de forma automática no solo para cadenas, sino también para matrices y otros tipos.
fuente
variable.blank? lo haré. Devuelve verdadero si la cadena está vacía o si la cadena es nula.
fuente
nil?
puede omitirse en contextos booleanos. En general, puede usar esto para replicar el código C #:fuente
En primer lugar, tenga cuidado con ese método:
Como dice Jesse Ezel :
Y si parches la clase String ... ¡asegúrate de que NilClass tampoco haya sido parcheado !
fuente
Cada clase tiene un
nil?
método:Y las cadenas tienen el
empty?
método:Recuerde que una cadena no es igual
nil
cuando está vacía, así que use elempty?
método para verificar si una cadena está vacía.fuente
Otra opción es convertir nulo en un resultado vacío sobre la marcha:
(my_string||'').empty?
fuente
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. Realmente no es una buena práctica hacer un parche de objetos centrales a menos que tenga una razón realmente convincente.
Entonces puedes hacer
String.nilorempty? mystring
fuente
Verifique si hay cadenas vacías en Ruby simple mientras evita las excepciones de NameError
Aquí hay algunas buenas respuestas, pero no necesita ActiveSupport o parches de mono para abordar el caso de uso común aquí. Por ejemplo:
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 generalmente es preferible a los más artificiales:
o es más detallado, porque las excepciones realmente deberían guardarse para cosas que no esperas que sucedan. En este caso, si bien puede 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.
fuente
¿Has probado refinamientos?
fuente
Si usa rieles, puede usar
#present?
Por lo tanto, para verificar el uso de longitud nula o cero
!present?
fuente
En rieles puedes probar
#blank?
.Advertencia: le dará positivos cuando la cadena consiste en espacios:
Solo quería señalarlo. Tal vez se adapte a tus necesidades.
UPD ¿Por qué recibo viejas preguntas en mi feed? Perdón por la necroposición.
fuente
Para golfistas de código:
O si no eres golfista (requiere ruby 2.3 o posterior):
fuente