Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

362
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!