Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

367
Visualizações
¿Cómo identifico si un carácter/símbolo es un número o no?

Estoy haciendo una calculadora simple usando Ruby como práctica. Todo está bien, excepto cómo identifico si un carácter/símbolo que ingresé es un número o si no uso la declaración if-else .

Por ejemplo:

 Enter first number: a Error: Enter correct number Enter first number: - Error: Enter correct number Enter first number: 1 Enter second number:b Error: Enter correct number Enter second number: 2 Choose operator (+-*/): * The product is: 2

Este es el código que ingresé primero:

 print "Enter first number: " x = gets.to_i print "Enter second number: " y = gets.to_i print "Choose operator (+-*/): " op = gets.chomp.to_s

Usaré la declaración if-else para identificar si el número ingresado es un número o no

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si desea probar si la cadena representa un número entero o flotante, use Kernel#Integer o Kernel#Float con el segundo argumento opcional (un hash) que tiene el valor de la clave :exception igual a false .

Por ejemplo,

 Integer('-123', exception: false) #=> -123 Integer("0xAa", exception: false) #=> 170 Integer('12.3', exception: false) #=> nil, Integer('12a3', exception: false) #=> nil
 Float('123', exception: false) #=> 123.0 Float("1.2e3", exception: false) #=> 1200.0 Float('12a3', exception: false) #=> nil, Float('1.2.3', exception: false) #=> nil

Nota

 Integer("123\n", exception: false) #=> 123

muestra que no tiene que chomp antes de probar si la cadena representa un número entero (similar a Float ).

Algunos de los ejemplos ilustran una limitación o complicación al usar una expresión regular para probar si una cadena representa un número entero o flotante.

over 4 years ago · Santiago Trujillo Relatório

0

Crear un nuevo método de cadena

 irb(main):001:0> class String irb(main):002:1> def number? irb(main):003:2> Float(self) != nil rescue false irb(main):004:2> end irb(main):005:1> end irb(main):012:0> x = gets 1 => 1 irb(main):013:0> x.number? => true irb(main):009:0> x = gets s => "s\n" irb(main):010:0> x.number? => false
over 4 years ago · Santiago Trujillo Relatório

0

Esta forma típica de hacer esto sería combinarlo con una expresión regular:

 x = gets.chomp if x.match?(/^\d+$/) puts "#{x} is a number" else puts "#{x} is not a number" end

Esto prueba si la cadena dada coincide con el patrón ^\d+$ , lo que significa "comienzo de línea, uno o más dígitos, luego final de línea". Tenga en cuenta que esto no coincidirá con caracteres como "," o "." - solo una cadena de dígitos 0-9. ¿Cadena #coincidencia? devolverá un valor booleano que indica si la cadena coincide o no con el patrón dado.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda