How to convert a string to an integer in JavaScript?

Convertir String a Integer en JavaScript

11/11/2021

Valoración: 4.18 (2246 votos)

En el mundo del desarrollo web con JavaScript, una de las tareas más comunes y fundamentales es la manipulación de datos. A menudo, recibimos información de fuentes externas, como formularios HTML, respuestas de API o parámetros de URL, en formato de cadena de texto (string). Sin embargo, para realizar operaciones matemáticas, comparaciones numéricas o validaciones, necesitamos convertir estas cadenas en números enteros (integers). Aunque pueda parecer una tarea sencilla, JavaScript ofrece varios métodos para lograrlo, cada uno con sus propias características y comportamientos que es crucial entender para evitar errores inesperados y escribir un código robusto.

Will a search function work if a string starts with an integer?
If there are multiple integers in the string: this is not exactly correct, yes it will do for string starting with a integer, but if the integer is in the middle of the string, it won't do. Maybe it should be better to use int(re.search(r'\d+', string1).group()) If string1 is (020) 3493, it fails. This will work fine.

Elegir el método incorrecto puede llevar a resultados sutilmente erróneos que son difíciles de depurar. Por ejemplo, ¿qué sucede si la cadena contiene caracteres no numéricos como '100px'? ¿O si es una cadena vacía? Cada técnica de conversión responde a estas preguntas de manera diferente. En este artículo exhaustivo, exploraremos en profundidad los métodos más populares para convertir una cadena a un entero en JavaScript, analizaremos sus diferencias, ventajas y desventajas, y te proporcionaremos las herramientas para que elijas siempre la mejor opción para tu caso de uso específico.

Índice de Contenido

El Método Clásico: parseInt()

La función parseInt() es, sin duda, la herramienta más conocida y utilizada para esta tarea. Su función principal es analizar una cadena de texto y devolver un número entero. Sin embargo, su poder y su complejidad radican en sus detalles.

La sintaxis completa es parseInt(string, radix).

  • string: La cadena que se va a analizar.
  • radix: Un número entero entre 2 y 36 que representa la base del sistema numérico a utilizar. Por ejemplo, 10 para decimal (el sistema que usamos habitualmente), 2 para binario, 16 para hexadecimal, etc.

Es una práctica muy recomendada especificar siempre el parámetro radix con el valor 10. Si se omite, los navegadores modernos suelen asumir la base 10, pero versiones más antiguas podían interpretar cadenas que comenzaban con '0' como números octales (base 8), lo que llevaba a errores muy confusos. Por seguridad y claridad, siempre usa el radix.

Comportamiento de parseInt()

La característica más distintiva de parseInt() es que analiza la cadena de izquierda a derecha y se detiene en el primer carácter que no puede interpretar como parte del número. Esto puede ser tanto una ventaja como una desventaja.

How to extract only numbers (INT) from a string?
There are several ways to extract only numbers (int) from a string. The easiest way is to use Regex. Let`s look at the methods listed above with examples. The following code extracts only Integers by regular expression. Pass the regular expression and the string to be converted as arguments to replaceAll().

Veamos algunos ejemplos de código:

// Caso ideal const num1 = parseInt("123", 10); console.log(num1); // Salida: 123 // Cadena con texto al final const num2 = parseInt("42px", 10); console.log(num2); // Salida: 42 (ignora 'px') // Cadena con espacios al principio const num3 = parseInt(" 99 ", 10); console.log(num3); // Salida: 99 (ignora los espacios) // Cadena que no empieza con un número const num4 = parseInt("Hola 50", 10); console.log(num4); // Salida: NaN // Usando una base diferente (hexadecimal) const num5 = parseInt("FF", 16); console.log(num5); // Salida: 255

El resultado NaN significa "Not a Number" (No es un Número) y es lo que JavaScript devuelve cuando una operación numérica falla. Siempre es buena idea verificar si el resultado de una conversión es NaN usando la función isNaN().

El Conversor Estricto: Number()

Otra forma de convertir una cadena en un número es utilizando la función constructora Number(). A diferencia de parseInt(), este método es mucho más estricto. Para que la conversión sea exitosa, la cadena completa (ignorando espacios al principio y al final) debe ser un número válido.

Este método no solo convierte a enteros, sino que también puede manejar números de punto flotante (decimales).

Comportamiento de Number()

Si la cadena contiene cualquier carácter que no sea parte de una notación numérica válida (como 'px' o letras), Number() devolverá NaN. Esto lo hace ideal para la validación de entradas donde se espera que el usuario ingrese únicamente un número.

Ejemplos de código:

// Caso ideal const num1 = Number("123"); console.log(num1); // Salida: 123 // Maneja decimales const num2 = Number("123.45"); console.log(num2); // Salida: 123.45 // Falla con caracteres extra const num3 = Number("42px"); console.log(num3); // Salida: NaN // Cadena vacía const num4 = Number(""); console.log(num4); // Salida: 0 // Espacios en blanco const num5 = Number(" 99 "); console.log(num5); // Salida: 99

Un detalle importante es que Number("") devuelve 0. Esto puede ser un comportamiento deseado o una fuente de errores, dependiendo del contexto de tu aplicación.

How to convert an int to a string in Java 11?
With Java 11, there are several ways to convert an int to a String type: 1) Integer.parseInt () 2) Integer.valueOf () 3) Integer constructor String str = "1234"; Integer result = new Integer(str); 4) Integer.decode I wrote this fast method to parse a string input into int or long.

El Atajo Rápido: El Operador Unario Más (+)

Para los desarrolladores que buscan concisión, JavaScript ofrece un atajo ingenioso: el operador unario más (+). Colocar un signo de más delante de una variable de tipo cadena intenta convertirla a un número. Su comportamiento es prácticamente idéntico al de la función Number().

Es una técnica muy común en código minificado o entre desarrolladores experimentados por su brevedad, aunque puede resultar menos legible para los principiantes.

Comportamiento del Operador Unario

// Conversión simple const str = "250"; const num1 = +str; console.log(num1); // Salida: 250 // Conversión con decimales const num2 = +"75.5"; console.log(num2); // Salida: 75.5 // Falla de forma idéntica a Number() const num3 = +"100km"; console.log(num3); // Salida: NaN // Cadena vacía también devuelve 0 const num4 = +""; console.log(num4); // Salida: 0

Tabla Comparativa: parseInt() vs. Number() vs. +

Para clarificar las diferencias sutiles pero importantes, aquí tienes una tabla comparativa con varias entradas de ejemplo.

Entrada (String)parseInt(entrada, 10)Number(entrada)+entradaComentarios
"42"424242Todos funcionan igual con cadenas numéricas limpias.
"42.7"4242.742.7parseInt trunca la parte decimal.
"42px"42NaNNaNSolo parseInt extrae el número inicial.
" 42 "424242Todos manejan correctamente los espacios en blanco.
""NaN00Comportamiento muy diferente para cadenas vacías.
"Hola 42"NaNNaNNaNparseInt también falla si la cadena no empieza con un número.
"0xFF"0255255Number y + reconocen notación hexadecimal, parseInt no sin el radix 16.

Extraer Números de Cadenas Complejas

A veces, el número que necesitamos está incrustado dentro de una cadena más larga, como "El pedido número 459 ha sido procesado". En estos casos, los métodos anteriores no funcionarán directamente. Aquí es donde las expresiones regulares se convierten en nuestras mejores aliadas.

Podemos usar el método .match() de las cadenas para encontrar la primera secuencia de dígitos.

How to convert a string to an integer in JavaScript?
1. Use Integer.parseInt () to Convert a String to an Integer This method returns the string as a primitive type int. If the string does not contain a valid integer then it will throw a NumberFormatException. So, every time we convert a string to an int, we need to take care of this exception by placing the code inside the try-catch block.
const texto = "El usuario con ID: 12345 ha iniciado sesión."; const expresionRegular = /\d+/; const resultadoMatch = texto.match(expresionRegular); // resultadoMatch será un array como ['12345', index: 18, input: '...', groups: undefined] let numeroExtraido = NaN; if (resultadoMatch) { numeroExtraido = parseInt(resultadoMatch[0], 10); } console.log(numeroExtraido); // Salida: 12345

Este enfoque de dos pasos (extraer y luego convertir) es extremadamente potente y flexible para manejar datos del mundo real que no siempre vienen en un formato limpio.

Preguntas Frecuentes (FAQ)

¿Cuál método es el mejor para usar?

No hay un "mejor" método universal; la elección depende del contexto:

  • Usa parseInt(string, 10) cuando necesites extraer un número entero del principio de una cadena y no te importan los caracteres que vengan después (por ejemplo, al procesar valores CSS como "16px").
  • Usa Number(string) o el operador unario + cuando necesites validar que una cadena completa es un número (entero o decimal) y quieres un fallo claro (NaN) si no lo es. Son ideales para validar campos de formulario.

¿Cómo puedo convertir un número de vuelta a una cadena?

La conversión inversa es más sencilla. Puedes usar el método .toString() en una variable numérica (let miNumero = 123; let miString = miNumero.toString();) o concatenarla con una cadena vacía (let miString = "" + miNumero;).

¿Qué pasa con los números muy grandes?

JavaScript maneja todos los números como flotantes de doble precisión de 64 bits. Esto significa que hay un límite para el tamaño de los enteros que se pueden representar con precisión, definido por Number.MAX_SAFE_INTEGER. Para números más grandes, deberías usar el tipo de dato BigInt, que se crea añadiendo una 'n' al final del número (12345n) o usando la función BigInt("12345").

¿Cómo manejo correctamente los errores de conversión?

La mejor manera es comprobar el resultado de la conversión con la función isNaN(). No confíes en que el valor sea "falsy" (evalúe a falso en un contexto booleano), ya que 0 es un número válido pero es falsy.

let userInput = "abc"; let number = parseInt(userInput, 10); if (isNaN(number)) { console.log("La entrada no es un número válido. Por favor, inténtalo de nuevo."); } else { console.log("El número es:", number); }

Conclusión

Convertir una cadena a un entero es una operación fundamental en JavaScript, y dominar sus matices te convertirá en un desarrollador más eficaz. Hemos visto que parseInt() ofrece flexibilidad para extraer números, mientras que Number() y el operador unario + proporcionan una validación estricta. Recuerda siempre especificar el radix en parseInt() y manejar el posible resultado NaN para crear aplicaciones fiables y sin errores. Al comprender las herramientas a tu disposición, puedes manejar con confianza cualquier dato que se te presente y asegurar que tus operaciones numéricas se basen en una base sólida y predecible.

Si quieres conocer otros artículos parecidos a Convertir String a Integer en JavaScript puedes visitar la categoría Juegos.

Subir