Vérifier si une chaîne est numérique

JavaBeginner
Pratiquer maintenant

Introduction

En Java, une chaîne de caractères est un type de données fréquemment utilisé qui peut être utilisé pour diverses tâches. Elle est souvent utilisée pour stocker l'entrée d'un champ de texte ou d'une zone de texte. Il est important de déterminer si l'entrée provenant de ces sources est des données numériques valides. Dans ce laboratoire, nous allons apprendre différentes façons de vérifier si une chaîne de caractères est un nombre valide en Java.

Utilisation de la méthode d'analyse pour vérifier les chaînes numériques

Le parsing est la méthode la plus simple et la meilleure pour déterminer si une chaîne de caractères est numérique en Java. Java fournit différentes méthodes de parsing intégrées, telles que Integer.parseInt(String number), Double.parseDouble(String number), Float.parseFloat(String number) et Long.parseLong(String number), qui agissent comme convertisseurs de type de données numériques correspondants.

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

Pour exécuter le code :

  • Enregistrez le code dans un fichier nommé NumericStringParser.java
  • Ouvrez le terminal et accédez au répertoire contenant le fichier
  • Compilez le code à l'aide de javac NumericStringParser.java
  • Exécutez le code à l'aide de java NumericStringParser

Utilisation d'une expression régulière pour vérifier les chaînes numériques

Les expressions régulières peuvent être utilisées pour correspondre à une chaîne de caractères et déterminer si elle est numérique ou non. Nous utilisons la méthode matches() des chaînes pour comparer la chaîne de caractères représentant un nombre avec des expressions régulières. Pour correspondre aux chaînes, on utilise l'expression régulière -?\\\d+(\\\\.\\\d+)?, où -? indique si le nombre est négatif ou non, \\\d+ recherche un ou plusieurs chiffres dans la chaîne, et (\\\\.\\\d+)? est utilisé pour correspondre aux nombres décimaux. Ici, \\\\. recherche le point décimal, et \\\d+ cherche un ou plusieurs chiffres après le point décimal.

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

Pour exécuter le code :

  • Enregistrez le code dans un fichier nommé NumericStringRegex.java
  • Ouvrez le terminal et accédez au répertoire contenant le fichier
  • Compilez le code à l'aide de javac NumericStringRegex.java
  • Exécutez le code à l'aide de java NumericStringRegex

Utilisation de la bibliothèque Apache Commons

La bibliothèque Apache Commons fournit certaines méthodes pour vérifier si une chaîne de caractères est numérique ou non.

Méthode NumberUtils.isCreatable()

La méthode isCreatable() est une méthode simple et pratique pour vérifier si une chaîne de caractères est numérique. Elle accepte également les chaînes numériques de nombres hexadécimaux commençant par 0x ou oX, les nombres octaux commençant par 0, les notations scientifiques utilisant la lettre e, et accepte également les nombres marqués avec un qualificateur de type.

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éthode NumberUtils.isParsable()

La méthode isParsable() est utilisée pour vérifier si une chaîne de caractères est analysable ou non. Elle ne peut pas fonctionner avec les nombres hexadécimaux ou les notations scientifiques comme la méthode 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éthode StringUtils.isNumeric()

La méthode isNumeric() vérifie les chiffres Unicode et renvoie false si la chaîne numérique représente un nombre négatif ou contient un point décimal. Cette méthode ne devrait être considérée que si nous vérifions uniquement les entiers positifs.

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éthode StringUtils.isNumericSpace()

La méthode isNumericSpace() vérifie également les espaces. Si une chaîne est du type "19 8", cette méthode renverra true. Elle renverra également true si la chaîne est composée uniquement d'espaces blancs.

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

Résumé

Dans ce laboratoire, nous avons appris plusieurs façons de vérifier si une chaîne de caractères est numérique en Java et comment les utiliser. Nous avons utilisé la méthode de parsing intégrée, les expressions régulières et la bibliothèque Apache commons pour vérifier si une chaîne de caractères est numérique ou non en Java.