Comment vérifier si une chaîne est vide en Java

JavaBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à vérifier si une chaîne de caractères est vide en Java. Vous allez explorer la méthode isBlank(), introduite en Java 11, qui détermine efficacement si une chaîne est vide ou ne contient que des caractères d'espacement.

Grâce à des exemples pratiques, vous utiliserez d'abord isBlank() pour vérifier différents types de chaînes de caractères. Ensuite, vous apprendrez à combiner isBlank() avec une vérification de nullité pour une validation robuste des chaînes. Enfin, vous comparerez le comportement de isBlank() et de isEmpty() pour comprendre leurs principales différences.

Utiliser isBlank() pour vérifier si une chaîne est vide

Dans cette étape, vous apprendrez à utiliser la méthode isBlank() en Java pour vérifier si une chaîne de caractères est vide. Une chaîne vide est une chaîne qui ne contient que des caractères d'espacement (espaces, tabulations, sauts de ligne) ou est vide.

La méthode isBlank() a été introduite en Java 11 et est un moyen pratique de vérifier les chaînes vides. Elle retourne true si la chaîne est vide ou ne contient que des caractères d'espacement, et false dans le cas contraire.

Créons un simple programme Java pour démontrer la méthode isBlank().

  1. Ouvrez le fichier HelloJava.java dans l'éditeur WebIDE s'il n'est pas déjà ouvert.

  2. Remplacez tout le contenu du fichier par le code suivant :

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Chaîne vide
            String str2 = "   "; // Chaîne avec seulement des espaces
            String str3 = "Hello"; // Chaîne non vide
            String str4 = " Hello "; // Chaîne avec des espaces au début et à la fin
    
            System.out.println("Is str1 blank? " + str1.isBlank());
            System.out.println("Is str2 blank? " + str2.isBlank());
            System.out.println("Is str3 blank? " + str3.isBlank());
            System.out.println("Is str4 blank? " + str4.isBlank());
        }
    }
    

    Dans ce code :

    • Nous déclarons quatre chaînes différentes : une chaîne vide, une chaîne avec seulement des espaces, une chaîne non vide et une chaîne avec des espaces au début et à la fin.
    • Nous utilisons str.isBlank() pour vérifier si chaque chaîne est vide et affichons le résultat.
  3. Enregistrez le fichier (Ctrl+S ou Cmd+S).

  4. Maintenant, compilons le programme. Ouvrez le terminal en bas de l'éditeur WebIDE et assurez-vous que vous êtes dans le répertoire ~/project. Sinon, utilisez la commande cd ~/project. Ensuite, compilez le code en utilisant la commande javac :

    javac HelloJava.java
    

    S'il n'y a pas d'erreurs, un fichier HelloJava.class sera créé dans le répertoire ~/project.

  5. Enfin, exécutez le programme compilé en utilisant la commande java :

    java HelloJava
    

    Vous devriez voir la sortie suivante :

    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? false
    

    Comme vous pouvez le voir, isBlank() identifie correctement la chaîne vide (str1) et la chaîne avec seulement des espaces (str2) comme étant vides, tandis que str3 et str4 sont considérées comme non vides car elles contiennent des caractères autres que des caractères d'espacement.

Combiner isBlank() avec une vérification de nullité

Dans l'étape précédente, vous avez appris à utiliser isBlank() pour vérifier si une chaîne est vide ou ne contient que des caractères d'espacement. Cependant, isBlank() lèvera une NullPointerException si la variable de chaîne est null. Dans les applications réelles, il est courant de rencontrer des chaînes null, il est donc important de les gérer correctement.

Pour vérifier en toute sécurité si une chaîne est null ou vide, vous devriez combiner une vérification de nullité avec la méthode isBlank(). La façon la plus courante de faire cela est d'utiliser une instruction if :

if (str == null || str.isBlank()) {
    // La chaîne est null ou vide
} else {
    // La chaîne n'est ni null ni vide
}

Modifions notre programme pour inclure une chaîne null et démontrons comment la gérer.

  1. Ouvrez le fichier HelloJava.java dans l'éditeur WebIDE.

  2. Remplacez le code actuel par le suivant :

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Chaîne vide
            String str2 = "   "; // Chaîne avec seulement des espaces
            String str3 = "Hello"; // Chaîne non vide
            String str4 = null; // Chaîne null
    
            System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
            System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
        }
    }
    

    Dans ce code mis à jour :

    • Nous avons ajouté une variable de chaîne null appelée str4.
    • Nous utilisons la condition str == null || str.isBlank() pour vérifier si chaque chaîne est null ou vide. L'opérateur || signifie "ou". Si la première partie (str == null) est vraie, la deuxième partie (str.isBlank()) n'est même pas vérifiée, ce qui empêche la NullPointerException.
  3. Enregistrez le fichier (Ctrl+S ou Cmd+S).

  4. Compilez le programme modifié dans le terminal :

    javac HelloJava.java
    
  5. Exécutez le programme compilé :

    java HelloJava
    

    Vous devriez voir la sortie suivante :

    Is str1 null or blank? true
    Is str2 null or blank? true
    Is str3 null or blank? false
    Is str4 null or blank? true
    

    Cette sortie montre que notre vérification combinée identifie correctement la chaîne vide, la chaîne avec des espaces et la chaîne null comme "null ou vide", tandis que la chaîne non vide est correctement identifiée comme "ni null ni vide".

Combiner la vérification de nullité avec isBlank() est une méthode robuste pour gérer différents états de chaîne dans vos programmes Java.

Comparer isBlank() et isEmpty()

Dans les étapes précédentes, vous avez utilisé isBlank() pour vérifier les chaînes qui sont vides ou ne contiennent que des caractères d'espacement. Vous avez peut - être également entendu parler de la méthode isEmpty() en Java. Dans cette étape, nous allons comparer isBlank() et isEmpty() pour comprendre la différence entre elles.

La méthode isEmpty() est disponible en Java depuis la version 1.0. Elle retourne true uniquement si la chaîne a une longueur de 0 (c'est - à - dire qu'il s'agit d'une chaîne vide ""). Elle retourne false pour toute autre chaîne, y compris les chaînes qui ne contiennent que des caractères d'espacement.

Modifions notre programme une dernière fois pour utiliser à la fois isBlank() et isEmpty() et voyons comment elles se comportent avec différents types de chaînes.

  1. Ouvrez le fichier HelloJava.java dans l'éditeur WebIDE.

  2. Remplacez le code actuel par le suivant :

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // Chaîne vide
            String str2 = "   "; // Chaîne avec seulement des espaces
            String str3 = "Hello"; // Chaîne non vide
            String str4 = null; // Chaîne null
    
            System.out.println("--- Using isBlank() ---");
            System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
            // Note: We still need the null check before calling isBlank()
            System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
    
            System.out.println("\n--- Using isEmpty() ---");
            // Note: We also need a null check before calling isEmpty()
            System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
            System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
            System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
            System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
        }
    }
    

    Dans ce code :

    • Nous avons ajouté des sections pour démontrer à la fois isBlank() et isEmpty().
    • Nous utilisons la vérification combinée de nullité (str == null || ...) avant d'appeler à la fois isBlank() et isEmpty() pour éviter la NullPointerException.
  3. Enregistrez le fichier (Ctrl + S ou Cmd + S).

  4. Compilez le programme dans le terminal :

    javac HelloJava.java
    
  5. Exécutez le programme compilé :

    java HelloJava
    

    Vous devriez voir la sortie suivante :

    --- Using isBlank() ---
    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? true
    
    --- Using isEmpty() ---
    Is str1 empty? true
    Is str2 empty? false
    Is str3 empty? false
    Is str4 empty? true
    

    À partir de la sortie, vous pouvez observer la différence clé :

    • isBlank() retourne true pour les chaînes vides ("") et les chaînes ne contenant que des caractères d'espacement (" ").
    • isEmpty() retourne true uniquement pour les chaînes vides (""). Elle retourne false pour les chaînes ne contenant que des caractères d'espacement (" ").

    Les deux méthodes nécessitent une vérification de nullité avant d'être appelées sur une chaîne potentiellement null.

En résumé :

  • Utilisez isEmpty() lorsque vous voulez seulement vérifier si une chaîne a une longueur nulle.
  • Utilisez isBlank() lorsque vous voulez vérifier si une chaîne est vide ou ne contient que des caractères d'espacement.

Comprendre la différence entre ces deux méthodes est crucial pour écrire un code de gestion de chaînes correct et robuste en Java.

Résumé

Dans ce laboratoire (lab), vous avez appris à vérifier si une chaîne est vide en Java en utilisant la méthode isBlank(), introduite en Java 11. Vous avez pratiqué l'utilisation de isBlank() sur différents types de chaînes, y compris les chaînes vides, les chaînes ne contenant que des caractères d'espacement et les chaînes avec du contenu. Vous avez également compilé et exécuté un simple programme Java pour démontrer la fonctionnalité de isBlank().