Suppression espaces texte Java

RepliKode Messages postés 3 Date d'inscription mardi 7 juin 2022 Statut Membre Dernière intervention 8 juin 2022 - Modifié le 8 juin 2022 à 07:46
Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024 - 8 juin 2022 à 14:12
Bonjour,
j'essaie de coder un programme le plus simple possible qui permettrait de supprimer les espaces d'un Texte (String) à l'aide d'un code en Java.
Il y a néanmoins une petite contrainte qui rend ce problème nettement plus compliqué :
Un espace simple "_" devra être supprimé --> ""
Mais un double espace "__" sera laissé tel quel --> "__".
J'avais d'abord pensé à utiliser la fonction replaceAll mais étant donné la contrainte ci-dessus je ne sais pas si c'est la bonne méthode :
public class Main {

    public static void main(String[] args) {
        String str = "T ex te  d e  Te st";
        str = str.replaceAll(" ", "");
        System.out.println("résultat : " + str);
    }
}

J'aurai besoin d'aide pour trouver la solution la plus simple à mon problème,
Merci :)

3 réponses

Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024 657
7 juin 2022 à 17:00
Bonjour

Tu connais les regex?
1
RepliKode Messages postés 3 Date d'inscription mardi 7 juin 2022 Statut Membre Dernière intervention 8 juin 2022
7 juin 2022 à 17:27
J'ai vu vite fait ce que c'était mais il me reste le même problème.
En faisant la sélection je n'arrive pas à différencier les simple ou les doubles espaces.
Si je dis de supprimer les espaces simples avec [^ ]{1} ca me supprime juste tous les espaces sans faire de tri.
0
Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024 657
7 juin 2022 à 17:43
Oui parce qu'il faut lui dire de sélectionner les espaces qui ne sont ni suivis si précédé par un espace et de les remplacer par rien.
Voici un exemple sur regex101 https://regex101.com/r/LWfndO/2

0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 127 > Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024
8 juin 2022 à 07:45
Bonjour,

Pour la pérennité de ta réponse je préfère copier ta regex ici pour éviter de dépendre d'un site externe qui pourrait l'effacer.

Remarque : le premier argument de replaceAll est une regex, il suffit donc de la prendre telle qu'elle, sans changer le reste du code.
str = str.replaceAll("(?<! ) (?! )", "");


Pour avoir plus d'infos sur les regex en Java, il faut regarder la documentation de la classe Pattern :
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html
0
Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024 657 > KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024
8 juin 2022 à 08:15
Bonjour

Certes, j'attendais un éventuel retour de ReplikCode avant de pérenniser.

Bonne journée
0
RepliKode Messages postés 3 Date d'inscription mardi 7 juin 2022 Statut Membre Dernière intervention 8 juin 2022
8 juin 2022 à 10:38
Merci pour vos retours, je pense maintenant avoir ce qu'il faut pour résoudre le problème.
Je posterai ici mon algo à jour de que j'aurai eu le temps de le modifier.
0
Whismeril Messages postés 19063 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 juin 2024 657
8 juin 2022 à 14:12
Si ce que tu appelles ton algo, c'est de supprimer les espaces seuls, KX l'a déjà posté ;)
0
Rejoignez-nous