Necesito verificar si una cadena contiene al menos un número usando Ruby (y supongo que algún tipo de expresiones regulares?).¿Cómo puedo verificar si una cadena tiene al menos un número usando Ruby?
¿Cómo podría hacer eso?
Necesito verificar si una cadena contiene al menos un número usando Ruby (y supongo que algún tipo de expresiones regulares?).¿Cómo puedo verificar si una cadena tiene al menos un número usando Ruby?
¿Cómo podría hacer eso?
puede utilizar el método de la clase =~
String
con la expresión regular /\d/
como argumento.
He aquí un ejemplo:
s = 'abc123'
if s =~ /\d/ # Calling String's =~ method.
puts "The String #{s} has a number in it."
else
puts "The String #{s} does not have a number in it."
end
if /\d/.match(theStringImChecking) then
#yep, there's a number in the string
end
Alternativamente, sin necesidad de utilizar una expresión regular:
def has_digits?(str)
str.count("0-9") > 0
end
que probablemente sea menos eficiente, si ignora la sobrecarga de compilar la expresión regular (lo cual es justo si la prueba se realiza en un bucle grande o si la cadena a verificar es muy larga). Para un caso degenerativo, su solución debe atravesar toda la cadena, mientras que una expresión regular adecuada se detendrá tan pronto como se encuentre un dígito. –
mientras que este puede no ser eficiente al máximo, es muy legible, lo que puede ser mejor para ciertas situaciones. –
En lugar de usar algo como "s = ~/\ d /", voy por las s más cortos [/ \ d /] que devuelve nil para un error (AKA falso en una prueba condicional) o el índice del golpe (también conocido como "true" en una prueba condicional). Si necesita el valor real use s [/ (\ d) /, 1]
Todo debe funcionar igual y es en gran parte una elección del programador.
!s[/\d/].nil?
puede ser una función independiente -
def has_digits?(s)
return !s[/\d/].nil?
end
o ... de añadir a la clase String hace que sea aún más conveniente -
class String
def has_digits?
return !self[/\d/].nil?
end
end
http: //public.kvalley. com/regex/regex.asp –