Comment vérifier si une chaîne de caractères est un nombre en Java

Mohammad Irfan 12 octobre 2023
  1. Vérifier si une chaîne de caractères est un nombre en Java
  2. Vérifier si une chaîne de caractères est un nombre en utilisant la classe Character en Java
  3. Vérifier si une chaîne de caractères est un nombre en utilisant la bibliothèque Apache en Java
  4. Vérifier si une chaîne de caractères est un nombre en utilisant la classe Double en Java
  5. Vérifier si une chaîne de caractères est un nombre en Java 8
Comment vérifier si une chaîne de caractères est un nombre en Java

Ce tutoriel présente la manière de vérifier si une chaîne est numérique en Java et donne quelques exemples de codes pour la comprendre.

Il existe plusieurs façons de vérifier une chaîne numérique, comme l’utilisation de la regex, la classe Double, la classe Character ou l’approche fonctionnelle Java 8, etc.

Vérifier si une chaîne de caractères est un nombre en Java

Une chaîne est numérique si et seulement si elle contient des chiffres (chiffres numériques valides). Par exemple, "123" est une chaîne numérique valide alors que "123a" n’est pas une chaîne numérique valide parce qu’elle contient un alphabet.

Pour vérifier une chaîne numérique, nous pourrions utiliser la méthode matched() de la classe String qui prend regex comme argument et retourne une valeur booléenne soit true soit 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);
  }
}

Production:

true
false
false

Vérifier si une chaîne de caractères est un nombre en utilisant la classe Character en Java

Nous pouvons utiliser la méthode isDigit() de la classe Character pour vérifier chaque caractère dans une boucle. Elle retourne soit la valeur true ou 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);
  }
}

Production:

true

Vérifier si une chaîne de caractères est un nombre en utilisant la bibliothèque Apache en Java

Si vous utilisez Apache, vous pouvez utiliser la méthode isNumeric() de la classe StringUtils, qui retourne true si elle contient une séquence numérique.

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);
  }
}

Production:

true
false

Vérifier si une chaîne de caractères est un nombre en utilisant la classe Double en Java

Nous pouvons utiliser la méthode parseDouble() de la classe Double qui convertit une chaîne de caractères en double et retourne une valeur de type double. Elle lance une exception si elle ne peut pas être analysée.

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");
    }
  }
}

Production:

It is a numerical string

Vérifier si une chaîne de caractères est un nombre en Java 8

Si vous utilisez Java 8 ou une version supérieure, vous pouvez utiliser cet exemple pour vérifier la chaîne numérique. Ici, la méthode isDigit() de la classe Character est passée dans allMatch() comme référence de méthode.

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);
  }
}

Production:

true
false

Article connexe - Java String