Comprobar si una cadena es numérica

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En Java, una cadena es un tipo de datos muy utilizado que se puede emplear para realizar diversas tareas. A menudo se utiliza para almacenar la entrada de un campo de texto o un área de texto. Es importante determinar si la entrada de estas fuentes es datos numéricos válidos. En este laboratorio, aprenderemos diferentes maneras de comprobar si una cadena es un número válido en Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java/StringManipulationGroup -.-> java/strings("Strings") java/StringManipulationGroup -.-> java/regex("RegEx") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/strings -.-> lab-117415{{"Comprobar si una cadena es numérica"}} java/regex -.-> lab-117415{{"Comprobar si una cadena es numérica"}} java/collections_methods -.-> lab-117415{{"Comprobar si una cadena es numérica"}} java/method_overloading -.-> lab-117415{{"Comprobar si una cadena es numérica"}} java/exceptions -.-> lab-117415{{"Comprobar si una cadena es numérica"}} java/string_methods -.-> lab-117415{{"Comprobar si una cadena es numérica"}} end

Usando el método de análisis para comprobar cadenas numéricas

El análisis es el método más fácil y mejor para determinar si una cadena es numérica en Java. Java proporciona diferentes métodos de análisis integrados, como Integer.parseInt(String number), Double.parseDouble(String number), Float.parseFloat(String number) y Long.parseLong(String number), que actúan como convertidores de tipos de datos numéricos correspondientes.

public static boolean isStringNumeric(String number) {
    boolean isNumeric;
    if(number == null) {
        isNumeric = false;
    } else {
        try {
            Double num = Double.parseDouble(number);
            isNumeric = true;
        } catch(NumberFormatException e) {
            isNumeric = false;
        }
    }
    return isNumeric;
}
public static void main(String[] args) {
    String num1 = "1001";
    String num2 = "-101";
    String num3 = "1a10";
    String num4 = null;

    System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
    System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
    System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
    System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}

Para ejecutar el código:

  • Guarde el código en un archivo llamado NumericStringParser.java
  • Abra la terminal y navegue hasta el directorio que contiene el archivo
  • Compile el código usando javac NumericStringParser.java
  • Ejecute el código usando java NumericStringParser

Usando Expresiones Regulares para Comprobar Cadenas Numéricas

Las expresiones regulares se pueden utilizar para coincidir con una cadena y determinar si es numérica o no. Utilizamos el método matches() de las cadenas para comparar la cadena número con las expresiones regulares. Para coincidir con cadenas, se utiliza la regex "-?\d+(\.\d+)?", donde -? denota si el número es negativo o no, \d+ busca uno o más dígitos en la cadena, y (\.\d+)? se utiliza para coincidir con números decimales. Aquí, el \. busca el punto decimal, y \d+ busca uno o más dígitos después del punto decimal.

public static boolean isStringNumeric(String number) {
    boolean isNumeric;
    String regex = "-?\\d+(\\.\\d+)?";
    if(number == null) {
        isNumeric = false;
    } else if(number.matches(regex)) {
        isNumeric = true;
    } else {
        isNumeric = false;
    }
    return isNumeric;
}
public static void main(String[] args) {
    String num1 = "1001";
    String num2 = "-101";
    String num3 = "1a10";
    String num4 = null;
    System.out.println("String " + num1 + " is numeric: " + isStringNumeric(num1));
    System.out.println("String " + num2 + " is numeric: " + isStringNumeric(num2));
    System.out.println("String " + num3 + " is numeric: " + isStringNumeric(num3));
    System.out.println("String " + num4 + " is numeric: " + isStringNumeric(num4));
}

Para ejecutar el código:

  • Guarde el código en un archivo llamado NumericStringRegex.java
  • Abra la terminal y navegue hasta el directorio que contiene el archivo
  • Compile el código usando javac NumericStringRegex.java
  • Ejecute el código usando java NumericStringRegex

Usando la Biblioteca Apache Commons

La biblioteca Apache Commons proporciona algunos métodos para comprobar si una cadena es numérica o no.

Método NumberUtils.isCreatable()

El método isCreatable() es un método simple y conveniente para comprobar si una cadena es numérica. También acepta cadenas numéricas de números hexadecimales que empiecen con 0x o oX, números octales que empiecen con 0, notaciones científicas que usen la letra e, y también acepta números marcados con calificador de tipo.

import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
    String num1 = "a10c";
    String num2 = "-104";
    String num3 = "100";
    String num4 = "0xA10";

    System.out.println("String " + num1 + " is numeric: " + NumberUtils.isCreatable(num1));
    System.out.println("String " + num2 + " is numeric: " + NumberUtils.isCreatable(num2));
    System.out.println("String " + num3 + " is numeric: " + NumberUtils.isCreatable(num3));
    System.out.println("String " + num4 + " is numeric: " + NumberUtils.isCreatable(num4));
}
Método NumberUtils.isParsable()

El método isParsable() se utiliza para comprobar si una cadena es analizable o no. No puede trabajar con números hexadecimales o notaciones científicas como el método isCreatable().

import org.apache.commons.lang3.math.NumberUtils;
public static void main(String[] args) {
    String num1 = "a10c";
    String num2 = "-104";
    String num3 = "100";
    String num4 = "0xA10";

    System.out.println("String " + num1 + " is numeric: " + NumberUtils.isParsable(num1));
    System.out.println("String " + num2 + " is numeric: " + NumberUtils.isParsable(num2));
    System.out.println("String " + num3 + " is numeric: " + NumberUtils.isParsable(num3));
    System.out.println("String " + num4 + " is numeric: " + NumberUtils.isParsable(num4));
}
Método StringUtils.isNumeric()

El método isNumeric() comprueba dígitos Unicode y devuelve false si la cadena numérica denota un número negativo o contiene un punto decimal. Este método solo debe considerarse si solo estamos comprobando enteros positivos.

import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
    String num1 = "a10c";
    String num2 = "-104";
    String num3 = "100";
    String num4 = "0.11";

    System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
    System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
    System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
    System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}
Método StringUtils.isNumericSpace()

El método isNumericSpace() también comprueba espacios. Si una cadena es del tipo "19 8" entonces este método devolverá true. También devolverá true si la cadena está compuesta solo por espacios en blanco.

import org.apache.commons.lang3.StringUtils;
public static void main(String[] args) {
    String num1 = "a10c";
    String num2 = "  ";
    String num3 = "100";
    String num4 = "0.11";

    System.out.println("String " + num1 + " is numeric: " + StringUtils.isNumeric(num1));
    System.out.println("String " + num2 + " is numeric: " + StringUtils.isNumeric(num2));
    System.out.println("String " + num3 + " is numeric: " + StringUtils.isNumeric(num3));
    System.out.println("String " + num4 + " is numeric: " + StringUtils.isNumeric(num4));
}

Resumen

En este laboratorio, aprendimos múltiples maneras de comprobar si una cadena es numérica en Java y cómo utilizarlas. Utilizamos el método de análisis integrado, expresiones regulares y la biblioteca Apache commons para comprobar si una cadena es numérica o no en Java.