« Salut Amigo ! »

"Pour autant que je sache, Rishi vous a déjà parlé des expressions régulières."

"Oui, c'était très intéressant."

"Génial, maintenant je vais vous parler de l'utilisation d'expressions régulières pour travailler avec des chaînes."

"Commençons par la question la plus simple :"

1) Comment puis-je vérifier si une chaîne correspond au modèle spécifié par une expression régulière ?

"Il existe une méthode matches pour cela. Vous passez une chaîne contenant une expression régulière, et la méthode renvoie vrai ou faux."

Méthode(s) Exemples)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
Résultat:

false (the String doesn't start with "news")

2) Comment remplacer toutes les sous-chaînes correspondantes par des chaînes différentes ?

"Il existe deux méthodes pour cela."

"La méthode replaceAll remplace toutes les occurrences d'une sous-chaîne par une autre chaîne."

"La méthode replaceFirst remplace la première occurrence d'une sous-chaîne passée par une chaîne spécifiée."

Méthode(s) Exemples)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
Résultat:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
Résultat:

s2 == "Good nEXs, everyone!";

3) Comment diviser une chaîne en parties ?

"Pour cela, nous avons la méthode split, qui prend un masque de délimitation :"

Méthode(s) Exemples)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Résultat (un tableau de trois chaînes) :

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

"La classe StringTokenizer est un autre moyen de diviser une chaîne en parties ."

"Cette classe n'utilise pas d'expressions régulières. Au lieu de cela, vous transmettez simplement une chaîne contenant un ensemble de délimiteurs. L'avantage de cette approche est qu'elle ne divise pas la chaîne entière en morceaux d'un seul coup, mais qu'elle se déplace lentement de du début à la fin."

"La classe se compose d'un constructeur et de deux méthodes. Vous devez transmettre la chaîne que nous décomposons dans le constructeur, ainsi qu'une chaîne contenant l'ensemble des caractères de délimitation."

La méthode nextToken renvoie le jeton suivant (sous-chaîne).

La méthode hasMoreTokens() renvoie true s'il existe encore des sous-chaînes qui n'ont pas encore été renvoyées.

Méthode(s) Exemples)
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
Sortie écran :

Good
ws
v
ryo
!

"Notez que tout caractère de la deuxième chaîne transmise au constructeur StringTokenizer est traité comme un délimiteur."

"Encore une fois, tout semble clair. Je ne serai peut-être pas capable d'écrire ce code tout seul tout de suite, mais je comprends ce qui se passe ici."

"Excellent, alors nous supposerons que vous maîtrisez le sujet."