Controlla se una stringa è un numero in Java

Mohammad Irfan 12 ottobre 2023
  1. Controlla se una stringa è un numero in Java
  2. Controlla se una stringa è un numero utilizzando la classe Character in Java
  3. Controlla se una stringa è un numero utilizzando la libreria Apache in Java
  4. Controlla se una stringa è un numero utilizzando la classe Double in Java
  5. Controlla se una stringa è un numero in Java 8
Controlla se una stringa è un numero in Java

Questo tutorial introduce come verificare se una stringa è numerica in Java ed elenca alcuni codici di esempio per comprenderla.

Ci sono diversi modi per controllare una stringa numerica come usare regex, la classe Double, la classe Character o l’approccio funzionale di Java 8, ecc.

Controlla se una stringa è un numero in Java

Una String è numerica se e solo se contiene numeri (cifre numeriche valide). Ad esempio, "123" è una stringa numerica valida mentre "123a" non è una stringa numerica valida perché contiene un alfabeto.

Per controllare la stringa numerica, potremmo usare il metodo matched() della classe String che accetta regex come argomento e restituisce un valore booleano true o false.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "123";
    boolean isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
    str = "121xy";
    isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
    str = "0x234";
    isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
  }
}

Produzione:

true
false
false

Controlla se una stringa è un numero utilizzando la classe Character in Java

Possiamo usare il metodo isDigit() della classe Character per controllare ogni carattere in un bucle. Restituisce un valore true o false.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = true;
    for (int i = 0; i < str.length(); i++) {
      if (!Character.isDigit(str.charAt(i))) {
        isNumeric = false;
      }
    }
    System.out.println(isNumeric);
  }
}

Produzione:

true

Controlla se una stringa è un numero utilizzando la libreria Apache in Java

Se stai usando Apache, puoi usare il metodo isNumeric() della classe StringUtils, che restituisce true se contiene una sequenza numerica.

import org.apache.commons.lang3.StringUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = StringUtils.isNumeric(str);
    System.out.println(isNumeric);
    str = "123xyz";
    isNumeric = StringUtils.isNumeric(str);
    System.out.println(isNumeric);
  }
}

Produzione:

true
false

Controlla se una stringa è un numero utilizzando la classe Double in Java

Possiamo usare il metodo parseDouble() della classe Double che converte una stringa in double e restituisce un valore di tipo double. Genera un’eccezione se non può essere analizzato.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    try {
      Double.parseDouble(str);
      System.out.println("It is a numerical string");
    } catch (NumberFormatException e) {
      System.out.println("It is not a numerical string");
    }
  }
}

Produzione:

It is a numerical string

Controlla se una stringa è un numero in Java 8

Se stai usando Java 8 o una versione successiva, puoi usare questo esempio per controllare la stringa numerica. Qui, il metodo isDigit() della classe Character viene passato in allMatch() come riferimento al metodo.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = str.chars().allMatch(Character::isDigit);
    System.out.println(isNumeric);
    str = "ab234";
    isNumeric = str.chars().allMatch(Character::isDigit);
    System.out.println(isNumeric);
  }
}

Produzione:

true
false

Articolo correlato - Java String