Un extrait de conférence avec un mentor dans le cadre du cours Codegym University. Inscrivez-vous au cours complet.


1 Comparer des chaînes

L'une des opérations les plus courantes avec les chaînes est la comparaison. La classe String a plus de dix méthodes différentes qui sont utilisées pour comparer une chaîne avec une autre chaîne. Ci-dessous, nous examinerons 8 des principaux.

Méthodes Description
boolean equals(String str)
Les chaînes sont considérées comme égales si tous leurs caractères correspondent.
boolean equalsIgnoreCase(String str)
Compare les chaînes en ignorant la casse des lettres (ignore si elles sont en majuscules ou en minuscules)
int compareTo(String str)
Compare les chaînes, renvoie le nombre de caractères correspondants depuis le début de la chaîne.
public int compareToIgnoreCase(String str)
Renvoie le nombre de caractères correspondants depuis le début d'une chaîne, ignore la casse
boolean regionMatches(int toffset, String str, int offset, int len)
Compare des parties de chaînes
boolean startsWith(String prefix)
Vérifie si la chaîne actuelle commence par la chaîneprefix
boolean endsWith(String suffix)
Vérifie si la chaîne actuelle se termine par la chaînesuffix

Supposons que vous souhaitiez écrire un programme qui demande à l'utilisateur un chemin d'accès à un fichier, puis vérifie le type de fichier en fonction de son extension. Le code d'un tel programme pourrait ressembler à ceci :

Code Remarques
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
Créer un Scannerobjet
Lire une ligne depuis la console

Vérifier si la chaîne pathse termine par la chaîne donnée


2 Recherche de sous-chaînes

Après avoir comparé des chaînes, la deuxième opération la plus courante consiste à trouver une chaîne dans une autre. La classe String a également quelques méthodes pour cela :

Méthodes Description
int indexOf(String str)
Recherche la chaîne strdans la chaîne actuelle. Renvoie l'index du premier caractère de la première occurrence.
int indexOf(String str, int index)
Recherche la chaîne strdans la chaîne en cours, en ignorant les premiers indexcaractères. Renvoie l'index de l'occurrence.
int lastIndexOf(String str)
Recherche la chaîne strdans la chaîne courante, en commençant par la fin. Renvoie l'index de la première occurrence.
int lastIndexOf(String str, int index)
Recherche la chaîne strdans la chaîne actuelle à partir de la fin, en sautant les premiers indexcaractères.
boolean matches(String regex)
Vérifie si la chaîne actuelle correspond à un modèle spécifié par une expression régulière.

Les méthodes indexOf(String)et indexOf(String, index)sont souvent utilisées en combinaison. La première méthode permet de trouver la première occurrence de la sous-chaîne passée dans la chaîne courante. Et la deuxième méthode vous permet de trouver les deuxième, troisième, etc. occurrences en sautant les premiers caractères d'index.

Supposons que nous ayons une URL du type " https://domain.com/about/reviews " et que nous souhaitions remplacer le nom de domaine par " codegym.cc ". Les URL peuvent avoir toutes sortes de noms de domaine différents, mais nous savons ce qui suit :

  • Le nom de domaine est précédé de deux barres obliques — "//"
  • Le nom de domaine est suivi d'une seule barre oblique — " /"

Voici à quoi ressemblerait le code d'un tel programme :

Code Remarques
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
Créer un objet Scanner
Lire une ligne depuis la console

Obtenir l'index de la première occurrence de la chaîne " //"
Nous obtenons l'index de la première occurrence de la chaîne /, mais ne regardons qu'après une occurrence des caractères //.
Nous obtenons la chaîne du début à la fin des caractères //
Nous obtenons la chaîne /de la fin.

Nous concaténons les chaînes et le nouveau domaine.

Les méthodes lastIndexOf(String)et lastIndexOf(String, index)fonctionnent de la même manière, seule la recherche est effectuée de la fin de la chaîne jusqu'au début.



3 Création de sous-chaînes

Un extrait de conférence avec un mentor dans le cadre du cours Codegym University. Inscrivez-vous au cours complet.


En plus de comparer des chaînes et de trouver des sous-chaînes, il existe une autre action très populaire : obtenir une sous-chaîne à partir d'une chaîne. Il se trouve que l'exemple précédent vous a montré un substring()appel de méthode qui a renvoyé une partie d'une chaîne.

Voici une liste de 8 méthodes qui renvoient des sous-chaînes à partir de la chaîne actuelle :

Méthodes Description
String substring(int beginIndex, int endIndex)
Renvoie la sous-chaîne spécifiée par la plage d'index beginIndex..endIndex.
String repeat(int count)
Répète la chaîne actuelle n fois
String replace(char oldChar, char newChar)
Renvoie une nouvelle chaîne : remplace le caractère oldCharpar le caractèrenewChar
String replaceFirst(String regex, String replacement)
Remplace la première sous-chaîne, spécifiée par une expression régulière, dans la chaîne actuelle.
public String replaceAll(String regex, String replacement)
Remplace toutes les sous-chaînes de la chaîne actuelle qui correspondent à l'expression régulière.
String toLowerCase()
Convertit la chaîne en minuscule
String toUpperCase()
Convertit la chaîne en majuscule
String trim()
Supprime tous les espaces au début et à la fin d'une chaîne

Voici un résumé des méthodes disponibles :

substring(int beginIndex, int endIndex)méthode

La substringméthode renvoie une nouvelle chaîne composée de caractères dans la chaîne actuelle, commençant au caractère avec index beginIndexet se terminant à endIndex. Comme pour tous les intervalles en Java, le caractère avec index endIndexn'est pas inclus dans l'intervalle. Exemples:

Code Résultat
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Si le endIndexparamètre n'est pas spécifié (ce qui est possible), alors la sous-chaîne est extraite du caractère de beginIndex jusqu'à la fin de la chaîne.

repeat(int n)méthode

La méthode de répétition répète simplement la chaîne actuelle nfois. Exemple:

Code Résultat
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)méthode

La replace()méthode renvoie une nouvelle chaîne dans laquelle tous les caractères oldCharsont remplacés par le caractère newChar. Cela ne change pas la longueur de la chaîne. Exemple:

Code Résultat
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()et replaceAll()méthodes

La replaceAll()méthode remplace toutes les occurrences d'une sous-chaîne par une autre. La replaceFirst()méthode remplace la première occurrence de la sous-chaîne transmise par la sous-chaîne spécifiée. La chaîne à remplacer est spécifiée par une expression régulière. Nous approfondirons les expressions régulières dans la quête Java Multithreading .

Exemples:

Code Résultat
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()méthodes

Nous avons appris à connaître ces méthodes lorsque nous avons appris à appeler les méthodes de la Stringclasse.

trim()méthode

La trim()méthode supprime les espaces de début et de fin d'une chaîne. Ne touche pas les espaces qui sont à l'intérieur d'une chaîne (c'est-à-dire ni au début ni à la fin). Exemples:

Code Résultat
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"