CodeGym /Cours /JAVA 25 SELF /Méthodes essentielles de String

Méthodes essentielles de String

JAVA 25 SELF
Niveau 9, Leçon 3
Disponible

1. Méthode length() : combien de caractères dans une chaîne ?

La méthode length() renvoie le nombre de caractères dans une chaîne. Ce n’est pas exactement la même chose que « quantité d’octets » (surtout si la chaîne contient des emojis ou des caractères Unicode), mais pour la plupart des cas — c’est exactement ce qu’il faut.

Exemple d’utilisation

String name = "Vasilisa";
int length = name.length();
System.out.println("Nombre de lettres dans le prénom : " + length); // 8

À quoi ça sert

  • Vérifier si l’utilisateur n’a pas saisi une chaîne vide.
  • Vérifier la longueur minimale/maximale d’un mot de passe.
  • Savoir combien de caractères il reste avant la limite (par exemple dans un SMS ou un tweet).

Exemple : vérification d’une chaîne vide

String input = "";
if (input.length() == 0) 
{
    System.out.println("La chaîne est vide !");
}

Astuce : pour vérifier si une chaîne est « vide », il existe aussi la méthode isEmpty(), mais nous en parlerons un peu plus loin.

FAQ rapide

  • La méthode length() ne prend pas d’arguments (les parenthèses sont toujours vides).
  • Si la chaîne est composée d’espaces, ils sont eux aussi comptés comme des caractères !
  • Si la chaîne vaut null, l’appel à length() entraînera une NullPointerException — vérifiez d’abord contre null.

2. Méthode substring() : extraire une partie de chaîne

La méthode substring() permet d’obtenir une sous-chaîne — « couper » un morceau selon les indices indiqués.

Il existe deux formes principales d’appel :

  • str.substring(startIndex) — à partir de la position startIndex jusqu’à la fin de la chaîne.
  • str.substring(startIndex, endIndex) — de la position startIndex jusqu’à endIndex (sans inclure le caractère d’indice endIndex).

Attention : l’indexation des caractères dans une chaîne commence à 0.

Exemples d’utilisation

Exemple 1 : Obtenir les trois premières lettres d’un prénom

String name = "Vasilisa";
String firstThree = name.substring(0, 3); // "Vas"
System.out.println(firstThree);

Exemple 2 : Obtenir l’extension du fichier

String fileName = "document.pdf";
int dotIndex = fileName.indexOf(".");
String extension = fileName.substring(dotIndex + 1); // "pdf"
System.out.println(extension);

Exemple 3 : Les 4 derniers caractères d’une chaîne

String cardNumber = "1234567890123456";
String lastFour = cardNumber.substring(cardNumber.length() - 4); // "3456"
System.out.println("Les 4 derniers chiffres : " + lastFour);

Particularités et subtilités

  • Des indices incorrects (startIndex < 0, endIndex > longueur, startIndex > endIndex) provoquent une StringIndexOutOfBoundsException.
  • La méthode renvoie toujours une nouvelle chaîne — l’originale ne change pas.
  • La seconde forme (avec deux paramètres) n’inclut pas le caractère d’indice endIndex.

String str = "abcdef"; 
// Indices : 0 1 2 3 4 5

str.substring(1, 4) → "bcd" // caractères avec les indices 1, 2, 3
Schéma de fonctionnement substring(start, end)

3. Méthode indexOf() : rechercher un caractère ou une sous-chaîne

La méthode indexOf() recherche la position (l’indice) de la première occurrence d’un caractère ou d’une sous-chaîne donné.

  • Si trouvé — renvoie l’indice (à partir de 0).
  • Si non trouvé — renvoie -1.

Exemples d’utilisation

Exemple 1 : Trouver le premier point dans un email

String email = "ivan.petrov@mail.com";
int dotIndex = email.indexOf('.');
System.out.println("Premier point à la position : " + dotIndex); // 4

Exemple 2 : Trouver une sous-chaîne

String text = "J’adore Java !";
int index = text.indexOf("Java");
System.out.println(index); // 8

Exemple 3 : Trouver un caractère après une position donnée

String s = "abracadabra";
int firstA = s.indexOf('a'); // 0
int secondA = s.indexOf('a', firstA + 1); // 3
System.out.println("La deuxième 'a' à la position : " + secondA);

Particularités et subtilités

  • Si le caractère/la sous-chaîne apparaît plusieurs fois, l’indice de la première occurrence est renvoyé.
  • Pour rechercher la dernière occurrence, utilisez lastIndexOf().
  • Pour un caractère, utilisez des guillemets simples : 'a' ; pour une sous-chaîne — des guillemets doubles : "abc".

Exemple : recherche de l’extension d’un fichier

String fileName = "report.final.version.docx";
int lastDot = fileName.lastIndexOf('.');
String extension = fileName.substring(lastDot + 1);
System.out.println("Extension du fichier : " + extension); // "docx"

4. Méthode charAt() : obtenir un caractère par indice

La méthode charAt(index) renvoie le caractère de la chaîne à son indice.

Exemples d’utilisation

Exemple 1 : Vérifier la première lettre d’une chaîne

String city = "Minsk";
char first = city.charAt(0); // 'M'
System.out.println("Première lettre : " + first);

Exemple 2 : Vérifier si la chaîne commence par une majuscule

String word = "Java";
if (Character.isUpperCase(word.charAt(0))) 
{
    System.out.println("Le mot commence par une majuscule !");
}

Exemple 3 : Parcourir tous les caractères d’une chaîne

String text = "Bonjour";
for (int i = 0; i < text.length(); i++) 
{
    System.out.println("Caractère #" + i + ": " + text.charAt(i));
}

Particularités et subtilités

  • Un indice hors plage (par exemple -1 ou >= longueur) entraînera une StringIndexOutOfBoundsException.
  • La méthode renvoie une valeur de type char, et non une chaîne.

5. Méthode toCharArray() : convertir une chaîne en tableau de caractères

La méthode toCharArray() — un moyen simple de convertir une chaîne en tableau de caractères (char[]). Utile pour le traitement caractère par caractère, le tri, la vérification, etc.

Exemple d’utilisation :

String text = "Hello";
char[] characters = text.toCharArray();

for (char c : characters) 
{
    System.out.println(c);
}
// Sortie:
// H
// e
// l
// l
// o

À quoi ça sert :

  • Traitement des caractères : les tableaux sont plus pratiques pour une logique caractère par caractère (par exemple, vérifier des anagrammes).
  • Compatibilité : certaines API attendent un char[] comme argument.

6. Méthode replace() : remplacer des sous-chaînes

La méthode replace(CharSequence target, CharSequence replacement) remplace toutes les occurrences de la sous-chaîne target par replacement. Elle renvoie une nouvelle chaîne ; l’originale ne change pas.

Exemple d’utilisation :

String sentence = "J’aime la programmation en Java.";
String newSentence = sentence.replace("Java", "Java 25");
System.out.println(newSentence);
// Sortie: J’aime la programmation en Java 25.

String email = "support@company.com";
String cleanEmail = email.replace("@", "[at]");
System.out.println(cleanEmail);
// Sortie: support[at]company.com

Particularités et subtilités

  • Toutes les occurrences sont remplacées.
  • String est immuable : replace() renvoie une nouvelle chaîne.
  • Pour des règles plus complexes, utilisez replaceAll() avec une expression régulière.

7. Méthodes trim() et strip() : supprimer les espaces superflus

Les deux méthodes suppriment les caractères « invisibles » au début et à la fin d’une chaîne.

  • trim() — méthode classique : supprime les espaces, tabulations, retours à la ligne et certains caractères de contrôle, mais pas tous les espaces Unicode.
  • strip() — méthode moderne : prend en compte tous les types d’espaces selon le standard Unicode. À privilégier dans les nouveaux projets.

Exemple d’utilisation :

String s1 = "   Bonjour, monde !   ";
System.out.println(s1.trim());
// Sortie: "Bonjour, monde !"

String s2 = " \u2005  Java 11  \u2005 "; // \u2005 — est un espace Unicode
System.out.println("trim(): " + s2.trim());
System.out.println("strip(): " + s2.strip());
// Sortie:
// trim():  Java 11  
// strip(): Java 11

À quoi ça sert :

  • Nettoyer la saisie utilisateur des espaces superflus.
  • Normaliser les données provenant de fichiers/journaux avant traitement.

8. Pratique : résoudre des exercices

Exercice 1 : Vérifier la longueur d’un mot de passe

String password = "qwerty";
if (password.length() < 8) 
{
    System.out.println("Le mot de passe est trop court !");
}
else 
{
    System.out.println("Le mot de passe est valide.");
}

Exercice 2 : Extraire le prénom d’un nom complet

String fullName = "Ivanov Ivan Ivanovich";
int firstSpace = fullName.indexOf(' ');
String name = fullName.substring(firstSpace + 1, fullName.indexOf(' ', firstSpace + 1));
System.out.println("Prénom : " + name); // "Ivan"

Exercice 3 : Vérifier que la chaîne commence par une lettre donnée

String surname = "Petrov";
if (surname.charAt(0) == 'P')
{
    System.out.println("Le nom de famille commence par la lettre P");
}

Exercice 4 : Obtenir le domaine d’un email

String email = "vasya.pupkin@gmail.com";
int at = email.indexOf('@');
String domain = email.substring(at + 1);
System.out.println("Domaine : " + domain); // "gmail.com"

Exercice 5 : Trouver toutes les occurrences de la lettre 'a' dans une chaîne

String s = "abracadabra";
int pos = s.indexOf('a');
while (pos != -1) 
{
    System.out.println("La lettre 'a' est trouvée à la position : " + pos);
    pos = s.indexOf('a', pos + 1); // on cherche à partir de la dernière position trouvée
}

9. Erreurs typiques avec les méthodes String

Erreur n° 1 : Dépassement des limites de la chaîne
On confond très souvent les indices et on accède à un caractère/une sous-chaîne inexistant(e).

String s = "Java";
char c = s.charAt(4); // Erreur ! Index 0..3
String s = "Hello";
String sub = s.substring(3, 10); // Erreur ! La longueur de la chaîne est 5

Erreur n° 2 : Confusion entre inclusion/exclusion de l’indice
La méthode substring(start, end) inclut le caractère d’indice start, mais n’inclut PAS le caractère d’indice end.

Erreur n° 3 : S’attendre à autre chose que -1 de la part de indexOf en cas d’absence
Vérifiez le résultat avant de l’utiliser, surtout si vous l’utilisez ensuite dans substring.

Erreur n° 4 : Mauvaise gestion des chaînes vides
Si la chaîne est vide (""), les appels à charAt(0) ou substring(0, 1) provoqueront une erreur. Vérifiez d’abord la longueur.

Erreur n° 5 : Gestion incorrecte des chaînes null
Si la chaîne vaut null, l’appel à n’importe quelle méthode (length(), substring(), etc.) provoquera une NullPointerException. Vérifiez toujours contre null avant traitement.

1
Mission
JAVA 25 SELF, niveau 9, leçon 3
Bloqué
Extraction d'un caractère par indice
Extraction d'un caractère par indice
1
Mission
JAVA 25 SELF, niveau 9, leçon 3
Bloqué
Recherche d'une sous-chaîne dans une chaîne
Recherche d'une sous-chaîne dans une chaîne
1
Mission
JAVA 25 SELF, niveau 9, leçon 3
Bloqué
Extraction d'une sous-chaîne
Extraction d'une sous-chaîne
1
Mission
JAVA 25 SELF, niveau 9, leçon 3
Bloqué
Vérification de la première lettre et extraction d'une sous-chaîne
Vérification de la première lettre et extraction d'une sous-chaîne
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION