La manipulation de la chaîne se fait le plus souvent lors de la programmation. Comme supprimer des espaces dans ou autour du texte de chaîne. Ceci est également connu sous le nom de « strip » supprimant les espaces dans la chaîne. Donc, jusqu’à présent, nous sommes tous conscients des différentes façons de supprimer des espaces de string en java, à savoir trim, replaceAll. Cependant, java 11 a apporté de nouveaux ajouts à ceux-ci avec des méthodes telles que strip, stripLeading, stripTrailing.
La plupart du temps, nous utilisons simplement la méthode de trim pour supprimer les espaces. Nous ne nous arrêtons jamais et pensons qu’il existe peut-être un meilleur moyen de répondre à nos besoins? Bien sûr, trim() fonctionne bien pour la plupart des cas, mais il existe de nombreuses méthodes différentes en java. Chacun ayant ses propres avantages et inconvénients. Comment décidons-nous quelle méthode nous convient le mieux?
Eh bien, dans ce blog, nous aborderons les différentes méthodes en détail.
- trim(): Suppression des espaces de début et de fin de la chaîne
- strip(): Supprime les espaces au début et à la fin de la chaîne. La méthode Strip est compatible avec le jeu de caractères Unicode
- trim vs strip: Différences entre la méthode trim et la méthode strip
- stripLeading(): Supprime les espaces blancs uniquement depuis le début de la chaîne
- stripTrailing(): Supprime les espaces blancs uniquement depuis la fin de la chaîne
- replace(): Remplace tous les caractères cibles par un nouveau caractère
- replaceAll() ) : Remplace tous les caractères correspondants par un nouveau caractère. Cette méthode prend l’expression régulière en entrée pour identifier la sous-chaîne cible qui doit être remplacée
- replaceAll vs replace: Différences entre la méthode replace et replaceAll
- replaceFirst(): Remplace uniquement la première occurrence de la sous-chaîne cible par une nouvelle chaîne de remplacement
Différentes façons de supprimer des espaces de la chaîne en java
Le point le plus important à noter est qu’en java, un objet string est immuable. Cela signifie que nous ne pouvons pas modifier une chaîne, donc toutes les méthodes renvoient une nouvelle chaîne avec toutes les transformations.
méthode trim() en java
trim() est la méthode la plus couramment utilisée par les développeurs java pour supprimer les espaces de début et de fin. Pour la méthode trim, un caractère d’espace signifie tout caractère dont la valeur ASCII est inférieure ou égale à 32 (‘U+0020’).
Exemple de méthode de trim pour supprimer des espaces:
public class StringTrimTest { public static void main(String args) { String string = " String with space "; System.out.println("Before trim: \"" + string +"\""); System.out.println("After trim: \"" + string.trim() +"\""); }}
Dans CommandLineRunnerImpl
status= running
Before trim: " String with space "After trim: "String with space"
méthode strip() Java 11
Dans la version de Java 11, une nouvelle méthode strip() a été ajoutée pour supprimer les espaces de début et de fin de la chaîne.
Cette méthode a été ajoutée car il existe différents caractères d’espace selon les normes Unicode ayant une valeur ASCII supérieure à 32 (‘U + 0020’). Ex: 8193 (U+2001).
Pour identifier ces caractères d’espace, la nouvelle méthode isWhitespace (int) a été ajoutée à partir de Java 1.5 dans la classe de caractères. Cette méthode utilise unicode pour identifier les caractères d’espace. Vous pouvez en savoir plus sur les caractères d’espace unicode ici.
La méthode strip utilise ce caractère.Méthode isWhitespace (int) pour couvrir une large gamme de caractères d’espace blanc et les supprimer.
Exemple de strip():
public class StringStripTest { public static void main(String args) { String string = " String with space "; System.out.println("Before strip: \"" + string+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
Dans CommandLineRunnerImpl
status= exécution
Before strip: " String with space "After strip: "String with space"
Différence entre la méthode trim et strip en java
trim() | bande() |
---|---|
De Java 1 | De Java 11 |
Utilise la valeur de point de code (ASCII) | Utilise la valeur Unicode |
Supprime les caractères de début et de fin (espace) | Supprime les caractères de début et de fin (espace) |
Supprime les caractères ayant une valeur ASCII inférieure ou égale à ‘U+0020′ ou ’32’ | Supprime tous les caractères d’espace selon unicode |
Regardons l’exemple où nous utiliserons un caractère d’espace blanc supérieur à 32 (‘U + 0020’) unicode.
public class StringTrimVsStripTest { public static void main(String args) { String string = '\u2001'+"String with space"+ '\u2001'; System.out.println("Before: \"" + string+"\""); System.out.println("After trim: \"" + string.trim()+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
Sortie:
Before: " String with space "After trim: " String with space "After strip: "String with space"
Dans l’exemple ci-dessus, nous pouvons voir que la méthode trim ne peut pas supprimer le caractère d’espace ajouté par le caractère unicode ‘\u2001’.
Remarque: Si vous utilisez une machine Windows, vous ne pourrez peut-être pas voir la sortie similaire en raison du jeu unicode limité. Vous pouvez utiliser des compilateurs en ligne pour exécuter le programme. Certains liens du compilateur en ligne sont les suivants,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
Méthode stripLeading() Java 11
Ajoutée dans Java 11, la méthode stripLeading() supprime tous les espaces de début d’une chaîne.
Similaire à la méthode strip Le stripLeading utilise également des caractères.isWhitespace (int) pour identifier les espaces blancs.
public class StringStripLeadingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripLeading()+"\""); }}
Sortie:
Before: " String with space "After : "String with space "
Méthode stripTrailing() Java 11
Ajoutée dans Java 11, la méthode stripTrailing() supprime tous les espaces de fin d’une chaîne.
Similaire à la méthode strip stripTrailing utilise également le caractère.isWhitespace (int) pour identifier les espaces blancs.
public class StringStripTrailingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripTrailing()+"\""); }}
Sortie:
Before:" String with space "After :" String with space"
replace(CharSequence target, CharSequence replacement):
Ajoutée à partir de java 1.5, cette méthode est utilisée pour remplacer chaque sous-chaîne cible par la chaîne de remplacement spécifiée.
Cette méthode remplace tous les éléments cibles correspondants.
Remarque: Une autre méthode de remplacement (char oldChar, char newChar) est présente dans la classe de chaîne java. La seule différence est que cette méthode prend un seul caractère comme cible et remplacement. Nous ne pouvons pas utiliser cette méthode pour supprimer de l’espace, car nous ne pouvons pas avoir de caractère vide en remplacement.
Exemple pour supprimer tous les espaces de la chaîne
public class StringReplaceTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string + "\""); System.out.println("Replace: \"" + string.replace(" ", "") + "\""); }}
Sortie:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (String regex, String replacement)
Ajouté en java 1.4, c’est l’une des méthodes les plus puissantes pour la manipulation de chaînes. Nous pouvons utiliser cette méthode à de nombreuses fins.
En utilisant la méthode replaceAll(), nous pouvons remplacer chaque sous-chaîne d’expression régulière correspondante par la chaîne de remplacement donnée. Par exemple pour supprimer tous les espaces, supprimer les espaces de début, supprimer les espaces de fin, etc.
Nous avons juste besoin de créer une expression régulière correcte avec un paramètre de remplacement correct. Quelques exemples d’expressions régulières comme ci-dessous:
\ s+ | Trouver tout l’espace |
^\ s+ | Trouver tous les espaces au début de la ligne |
\ s+$ | Trouver tous les espaces en fin de ligne |
Exemple de remplacement des espaces dans une chaîne,
Remarque: En java pour ajouter ‘/’, nous devons utiliser un caractère d’échappement, donc pour « \s + », nous devons utiliser « \\s+ »
public class StringReplaceAllTest { public static void main(String args) { String string = " String with space "; System.out.println("Before replaceAll : \"" + string+"\""); System.out.println("Replace all space : \"" + string.replaceAll(" ", "") + "\""); System.out.println("Replace all regex : \"" + string.replaceAll("\s+", "") + "\""); System.out.println("Replace Leading : \"" + string.replaceAll("^\s+", "") + "\""); System.out.println("Replace trailing : \"" + string.replaceAll("\s+$", "") + "\""); }}
Sortie:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
Comme nous pouvons le voir, replaceAll() est une méthode assez puissante si nous l’utilisons avec une expression régulière appropriée.
Différence entre la méthode replaceAll et replace
Remplacer tout() | remplacer() |
---|---|
De Java 1.4 | De Java 1.5 |
Accepte l’expression régulière pour l’identification de la cible | Accepte la chaîne pour l’identification de la cible |
Utilisé pour le remplacement de ficelle fixe ou dynamique | Utilisé pour le remplacement de ficelle fixe |
Supprime les caractères ayant une valeur ASCII inférieure ou égale à ‘U+0020′ ou ’32’ | Supprime tous les caractères d’espace selon unicode |
replaceFirst (Expression régulière de chaîne, Remplacement de chaîne)
Ajouté en java 1.4, La méthode replaceFirst remplace uniquement la première correspondance d’une expression régulière donnée par une chaîne de remplacement.
Cette méthode peut être très utile si vous avez juste besoin de remplacer une seule première occurrence. Par exemple, si nous avons juste besoin de supprimer les espaces de début, nous pouvons utiliser « \\s + » ou « ^\\s + ».
Nous pouvons également utiliser cette méthode pour supprimer les espaces de fin en utilisant l’expression régulière « \\s +$ ». Comme cette expression ne correspondra qu’aux derniers espaces de la ligne. Les derniers espaces sont donc considérés comme la première correspondance pour cette méthode.
Prenons un exemple pour supprimer les espaces de début et de fin de la chaîne
public class StringReplaceFistTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string+"\""); System.out.println("Replace : \"" + string.replaceFirst("space", "update") + "\""); System.out.println("Leading : \"" + string.replaceFirst("\s+", "") + "\""); System.out.println("Trailing : \"" + string.replaceFirst("\s+$", "") + "\""); }}
Sortie
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Lecture rapide de la piste :
- Il existe différentes façons de supprimer des espaces d’une chaîne en java
- trim() est la méthode la plus couramment utilisée pour supprimer des espaces dans une chaîne
- la méthode trim n’est pas compatible avec unicode et utilise la valeur ascii pour identifier les caractères d’espace
- De java 11 une nouvelle méthode ‘strip()’ est ajoutée pour supprimer des espaces
- La méthode strip est unicode aware et il devrait être utilisé pour supprimer des espaces spécialement dans les cas multilingues
- De Java 11 des méthodes telles que stripLeading() et stripTrailing() sont ajoutées pour supprimer les espaces de début et de fin.
- Pour une suppression plus contrôlée des espaces, nous pouvons utiliser replaceAll(), replace(), replaceFirst()