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
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.
GO TO FULL VERSION