Voilà !
Je veux écrire une fonction qui, étant donné une chaine de caractères, renvoie la chaine, mais toutes les suites de caractères espaces sont remplacés par un seul.
S' il y a 2 caractères espaces qui se suivent, l' un des deux disparaît.
je peux donc utiliser la méthode de la classe String replaceAll(" ", " "). 2 caractères deviennet un seul
Mais le problème c' est que s' il ya 3 caractères espaces qui se suivent, il doit en rester un seul.
Se sachant pas à priori si la chaine contient que des doubles espaces ou des triples, ou même plus, comment faire.
J' ai donc imaginé cette fonction
Ensuite, j' ai créé ma fonction qui transforme toute suite de caractères espace (quelque soit le nombre) en un seul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* Ecrire une fonction qui, étant donné une chaine de caractères, teste la présence d' au moins deux caractères espaces contigus.*/ public static boolean espacesContigusChaine(String chaine) { boolean verite = true; for(int i = 0; i < (chaine.length() - 1); i++) { if(chaine.charAt(i) == ' ' && chaine.charAt(i+1) == ' ') verite = true; else verite = false; } return verite; }
Comme vous le voyez dans le code, je dis, tant qu' on trouvera au moins deux espaces qui se suivent dans la chaine, remplacer double espace par simple espace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static String desSuitesEspacesEnUn(String chaine) { while(espacesContigusChaine(chaine)); { chaine = chaine.replaceAll(" ", " ");// remplacer double par simple } return chaine; }
Lorsque j' affiche la chaine transformée, y a problème. Les doubles espaces sont transformées en simple. Mas les triples sont transformés en double et les quatruple en triple. En fait, la fonction enlève un seul espace dans toute suite d' espace.
C' est comme si le tant que ( while(espacesContigusChaine(chaine)); )ne servait à rien.
Aider moi à trouver ce qui cloche
Partager