W3docs

Méthodes de String en Java

Référence des méthodes String Java courantes : length, charAt, substring, indexOf, replace, split, toUpperCase, trim et bien d'autres.

La classe String dispose de dizaines de méthodes. Ce chapitre est une référence pratique de celles que vous utiliserez réellement, regroupées par usage : inspection, comparaison, recherche, découpage, transformation, division/jointure, conversion et formatage.

Rappel : les chaînes sont immuables. Chaque méthode ci-dessous renvoie une nouvelle chaîne (ou une autre valeur) — elle ne modifie jamais la chaîne sur laquelle vous l'avez appelée. Cela signifie qu'un appel tel que s.toUpperCase(); seul ne sert à rien ; vous devez capturer le résultat :

String s = "hello";
s.toUpperCase();        // result discarded — s is still "hello"
s = s.toUpperCase();    // s is now "HELLO"

Les index sont basés sur zéro et comptent les unités de code UTF-16, et non les caractères perçus par l'utilisateur, ce qui importe pour les emoji et autres caractères supplémentaires.

Inspecter une chaîne

MéthodeCe qu'elle retourne
length()nombre d'unités de code UTF-16
isEmpty()true si la longueur est 0
isBlank() (Java 11+)true si la longueur est 0 ou ne contient que des espaces
charAt(int i)le caractère à l'index i
codePointAt(int i)le point de code Unicode à l'index i
"hello".length();      // 5
"".isEmpty();          // true
"   ".isBlank();       // true
"hello".charAt(1);     // 'e'

Comparer des chaînes

MéthodeCe qu'elle retourne
equals(other)true si les contenus sont égaux
equalsIgnoreCase(other)égalité sans distinction de casse
compareTo(other)ordre lexicographique négatif / 0 / positif
compareToIgnoreCase(other)pareil, sans distinction de casse
"hi".equals("hi");                  // true
"HI".equalsIgnoreCase("hi");        // true
"apple".compareTo("banana");        // negative

Préférez toujours .equals() à == pour comparer des contenus (Opérateurs de comparaison). == compare les références d'objets — si deux variables pointent vers le même objet — et non les caractères qu'ils contiennent. Parce que Java interne les littéraux de chaîne, == semble parfois fonctionner, puis échoue dès qu'une chaîne est construite à l'exécution :

String a = "hi";
String b = "hi";
String c = new String("hi");

a == b;          // true  — both point to the same interned literal
a == c;          // false — c is a different object
a.equals(c);     // true  — same contents

compareTo est ce qu'il vous faut pour le tri : il renvoie un nombre négatif, zéro ou un nombre positif, ce qui s'intègre directement dans Collections.sort ou les chaînes de Comparator.

Rechercher

MéthodeCe qu'elle retourne
contains(seq)true si seq apparaît n'importe où
indexOf(seq)premier index où seq commence, ou -1
indexOf(seq, fromIndex)pareil, en commençant à fromIndex
lastIndexOf(seq)dernier index où seq commence, ou -1
startsWith(prefix)true si la chaîne commence par prefix
endsWith(suffix)true si la chaîne se termine par suffix
String s = "abc-xyz-abc";
s.contains("xyz");       // true
s.indexOf("abc");        // 0
s.lastIndexOf("abc");    // 8
s.startsWith("abc");     // true
s.endsWith("xyz");       // false

Découper

MéthodeCe qu'elle retourne
substring(start)de l'index start jusqu'à la fin
substring(start, end)de start (inclus) à end (exclus)
String s = "Hello, World!";
s.substring(7);        // "World!"
s.substring(7, 12);    // "World"

Les index négatifs ne sont pas autorisés — ils lèvent une StringIndexOutOfBoundsException.

Transformer

MéthodeCe qu'elle retourne
toUpperCase()copie en majuscules
toLowerCase()copie en minuscules
trim()copie sans espaces blancs ASCII en début/fin
strip() (Java 11+)copie sans espaces blancs Unicode en début/fin
replace(old, new)chaque correspondance littérale remplacée
replaceAll(regex, replacement)remplacement basé sur une regex
replaceFirst(regex, replacement)regex, première correspondance uniquement
repeat(n) (Java 11+)la chaîne répétée n fois
concat(other)identique à s + other
"  hello  ".strip();                 // "hello"
"banana".replace("a", "_");          // "b_n_n_"
"hello".repeat(3);                   // "hellohellohello"
"abc 123".replaceAll("\\d", "*");    // "abc ***"

Diviser et joindre

MéthodeCe qu'elle retourne
split(regex)tableau de sous-chaînes
split(regex, limit)pareil, mais limité à limit éléments
String.join(sep, parts...)méthode statique — joint avec un séparateur
chars()IntStream d'unités de code UTF-16
lines() (Java 11+)Stream<String> de lignes
"a,b,c".split(",");                     // ["a","b","c"]
String.join("-", "a", "b", "c");        // "a-b-c"
String.join(",", List.of("a","b"));     // "a,b"
"line1\nline2\nline3".lines().count();  // 3

split prend une regex, pas une chaîne simple — pensez donc à échapper les métacaractères regex : utilisez split("\\.") pour diviser sur un point littéral, et non split(".") (qui correspond à chaque caractère et renvoie un tableau vide). Les chaînes vides finales sont supprimées par défaut ; passez une limit négative (ex. split(",", -1)) pour les conserver.

Conversion

MéthodeCe qu'elle retourne
toCharArray()char[] des caractères de la chaîne
getBytes()tableau d'octets UTF-8 (ou encodage de la plateforme selon la surcharge)
String.valueOf(any)statique — convertit n'importe quelle valeur en chaîne
Integer.parseInt(s)analyse une chaîne en int
Double.parseDouble(s)analyse une chaîne en double
Boolean.parseBoolean(s)analyse une chaîne en boolean
String.valueOf(42);              // "42"
Integer.parseInt("42");          // 42
Double.parseDouble("3.14");      // 3.14
"hello".toCharArray();           // {'h','e','l','l','o'}

Les méthodes parse* lèvent une NumberFormatException si le texte n'est pas un nombre valide, alors encapsulez les saisies utilisateur dans un try/catch ou validez-les d'abord. Contrairement à parseInt, String.valueOf(null) est sûre — elle renvoie la chaîne "null" plutôt que de lever une exception.

Formatage

MéthodeCe qu'elle retourne
String.format(fmt, args...)statique — chaîne formatée à la printf
formatted(args...) (Java 15+)méthode d'instance, identique à format avec this comme fmt
String.format("%s is %d", "Ada", 36);     // "Ada is 36"
"%s is %d".formatted("Ada", 36);          // "Ada is 36"

Démonstration combinée

java— editable, runs on the server

Prochaine étape

Concaténation de chaînes Java approfondit +, concat et StringBuilder, en expliquant quand chacun est l'outil approprié.

Pratique

Pratique
Quelle méthode retourne true si une chaîne ne contient que des espaces blancs ?
Quelle méthode retourne true si une chaîne ne contient que des espaces blancs ?
Was this page helpful?