Supprimer les espaces dans un String
Résolu/Fermé
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
-
Modifié par pijaku le 28/03/2014 à 16:38
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 31 mars 2014 à 22:36
walidovich_85 Messages postés 608 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 25 octobre 2015 - 31 mars 2014 à 22:36
A voir également:
- Supprimer les espaces dans un String
- Comment supprimer une page dans word - Guide
- Supprimer compte instagram - Guide
- Espaces insécables - Guide
- Impossible de supprimer un fichier - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
9 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié par KX le 28/03/2014 à 18:55
Modifié par KX le 28/03/2014 à 18:55
Bonjour,
Pour déboguer peux tu nous dire ce que donne ce code :
La confiance n'exclut pas le contrôle
Pour déboguer peux tu nous dire ce que donne ce code :
public static long StoL(String str) { if (str.isEmpty()) return 0; String space = " "; String nb = str.replace(space, ""); System.out.println(java.util.Arrays.toString(space.getBytes())); System.out.println(java.util.Arrays.toString(str.getBytes())); System.out.println(java.util.Arrays.toString(nb.getBytes())); return Long.valueOf(nb); }
La confiance n'exclut pas le contrôle
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
29 mars 2014 à 11:43
29 mars 2014 à 11:43
Bonjour,
walidovich_85 :
Oui j'avoue que ça n'a aucun sens voici le début de la fonction
class monaction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
Point E[];
Point P = new Point(0, 0);
Point Q = new Point(0, 0);
Point R = new Point(0, 0);
int i, j;
String s;
long n = 0, q = 0, a = 0, b = 0;
a = Point.StoL(Tex[0].getText());
b = Point.StoL(Tex[1].getText());
q = Point.StoL(Tex[2].getText());
le reste si des calculs
KX :
voila le résultat affiché : j'ai mis comme entrée "1 234"
[32]
[49, -96, 50, 51, 52]
[49, -96, 50, 51, 52]
Merci beaucoup :)
walidovich_85 :
Oui j'avoue que ça n'a aucun sens voici le début de la fonction
class monaction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
Point E[];
Point P = new Point(0, 0);
Point Q = new Point(0, 0);
Point R = new Point(0, 0);
int i, j;
String s;
long n = 0, q = 0, a = 0, b = 0;
a = Point.StoL(Tex[0].getText());
b = Point.StoL(Tex[1].getText());
q = Point.StoL(Tex[2].getText());
le reste si des calculs
KX :
voila le résultat affiché : j'ai mis comme entrée "1 234"
[32]
[49, -96, 50, 51, 52]
[49, -96, 50, 51, 52]
Merci beaucoup :)
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
29 mars 2014 à 11:51
29 mars 2014 à 11:51
Mon Tex[0] je l'ai créé comme ça :
Tex[i] = new JFormattedTextField(NumberFormat.getNumberInstance());
pour stoker que les nombre dans mon champ d'écriture, et du coups ça ajoute des espaces automatiquement entre chaque groupe de 3 chiffres "1 424 128"
mais apparemment ce sont pas des espaces ordinaires, je ne sais pas comment les supprimer afin de transformer ce String en long.
Tex[i] = new JFormattedTextField(NumberFormat.getNumberInstance());
pour stoker que les nombre dans mon champ d'écriture, et du coups ça ajoute des espaces automatiquement entre chaque groupe de 3 chiffres "1 424 128"
mais apparemment ce sont pas des espaces ordinaires, je ne sais pas comment les supprimer afin de transformer ce String en long.
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié par KX le 29/03/2014 à 12:52
Modifié par KX le 29/03/2014 à 12:52
Tu as un problème d'encodage. Les espaces que tu as dans ton code sont "normaux" (byte=32), mais ceux que tu tapes dans ton interface graphique sont différents (byte=-96)
Java essaye de supprimer tous les byte 32 mais il n'y en a pas car tu n'as que des byte -96
Après quelques recherches, le byte -96 correspond au "non-breaking space" ( en html) qui est différent de l'espace.
Voici une manière de modifier ton code, en ne supprimant pas uniquement les espaces, mais tout ce qui n'est pas des chiffres (ou les signes + et -)
Java essaye de supprimer tous les byte 32 mais il n'y en a pas car tu n'as que des byte -96
Après quelques recherches, le byte -96 correspond au "non-breaking space" ( en html) qui est différent de l'espace.
Voici une manière de modifier ton code, en ne supprimant pas uniquement les espaces, mais tout ce qui n'est pas des chiffres (ou les signes + et -)
String nb = s.replaceAll("[^\\d-\\+]", "");
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
29 mars 2014 à 16:28
29 mars 2014 à 16:28
Merci beaucoup KX pour votre aide, ça marche parfaitement :)
j'ai bien aimé votre astuce
j'ai bien aimé votre astuce
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
31 mars 2014 à 22:36
31 mars 2014 à 22:36
Le roi KX.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
28 mars 2014 à 11:20
28 mars 2014 à 11:20
Bonjour,
« ça bug », ça n'est pas très clair !
Un message d'erreur ? À la compilation ? À l'exécution ? Un comportement non souhaité ? Un résultat différent de celui attendu ?
Xavier
« ça bug », ça n'est pas très clair !
Un message d'erreur ? À la compilation ? À l'exécution ? Un comportement non souhaité ? Un résultat différent de celui attendu ?
Xavier
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
28 mars 2014 à 11:22
28 mars 2014 à 11:22
voila le message d'erreur
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "2 132"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.valueOf(Unknown Source)
at Point.StoL(Point.java:158)
at Fenetre$monaction.actionPerformed(Fenetre.java:145)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
....
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "2 132"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.valueOf(Unknown Source)
at Point.StoL(Point.java:158)
at Fenetre$monaction.actionPerformed(Fenetre.java:145)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
28 mars 2014 à 16:35
28 mars 2014 à 16:35
Bonsoir,
Ta fonction marche très bien. et l'erreur ne peut pas venir de la fonction StoL directement.
Mais c clair que cette fonction fait partie d'un code plus large qui contient des boutons et des entrées sorties.
Si vous pouvez le partager, ça serait plus facile pour vous aider.
Bonne chance
Ta fonction marche très bien. et l'erreur ne peut pas venir de la fonction StoL directement.
Mais c clair que cette fonction fait partie d'un code plus large qui contient des boutons et des entrées sorties.
Si vous pouvez le partager, ça serait plus facile pour vous aider.
Bonne chance
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
28 mars 2014 à 16:57
28 mars 2014 à 16:57
La fonction est utilisé dans cette ligne :
long a = Point.StoL(Tex[0].getText());
avec Tex est un tableau de JLabel
j'ai essayé ma fonction StoL séparément dans le main avec un exemple est ça marche marfaitement, mais quand j'essaie de l'utiliser avec ma fenêtre avec java swing ça m'affiche cette erreur.
j'ai mis un affichage de nb dans ma fonction StoL pour voir est ce que les espaces ont été bien supprimé, mais apparament il supprime pas les espaces, du coup ValueOf bug avec des espaces entre les chiffres
long a = Point.StoL(Tex[0].getText());
avec Tex est un tableau de JLabel
j'ai essayé ma fonction StoL séparément dans le main avec un exemple est ça marche marfaitement, mais quand j'essaie de l'utiliser avec ma fenêtre avec java swing ça m'affiche cette erreur.
j'ai mis un affichage de nb dans ma fonction StoL pour voir est ce que les espaces ont été bien supprimé, mais apparament il supprime pas les espaces, du coup ValueOf bug avec des espaces entre les chiffres
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 28/03/2014 à 17:32
Modifié par walidovich_85 le 28/03/2014 à 17:32
Puisque la fonction marche parfaitement séparée, alors l'erreur ne peut venir que de l'entrée T[0].getText();
Pouvez vous l'afficher avant de la passer vers la fonction SotL?
Being normal is boring... being geek is interesting
Pouvez vous l'afficher avant de la passer vers la fonction SotL?
Being normal is boring... being geek is interesting
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
28 mars 2014 à 18:06
28 mars 2014 à 18:06
Pour une entrée par exemple dans T[0].getText() je mis "12 345"
j'ai fait un affichage de T[0].getText(); il l'affiche bien "12 345"
le problème quand j'affiche nb :
String nb = s.replace(" ", "");
System.out.println(nb);
il m'affiche nb = "12 345" !!!!!! il ne supprime pas les espaces !!!
je ne comprend rien !
toute à l'heur je me suis trompé en vous disant que T[0] est un JLabel en fait c'est un JFormattedTextField, mais ça ne change rien au problème j'imagine.
Merci pour votre aide si vous avez des idées :)
j'ai fait un affichage de T[0].getText(); il l'affiche bien "12 345"
le problème quand j'affiche nb :
String nb = s.replace(" ", "");
System.out.println(nb);
il m'affiche nb = "12 345" !!!!!! il ne supprime pas les espaces !!!
je ne comprend rien !
toute à l'heur je me suis trompé en vous disant que T[0] est un JLabel en fait c'est un JFormattedTextField, mais ça ne change rien au problème j'imagine.
Merci pour votre aide si vous avez des idées :)
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 28/03/2014 à 18:25
Modifié par walidovich_85 le 28/03/2014 à 18:25
J'ai testé ça:
résultat parfait:
ça n'a aucun sens qu ça fonctionne pas chez vous.
Si non, pouvez vous encore partager la partie du code qui implique le JFormattedTextField?
Being normal is boring... being geek is interesting
public static void main(String args[]) throws Exception { String s = new String("129 98 287"); System.out.println("La chaine s :\t\t" + s); JFormattedTextField jt = new JFormattedTextField(s); Long l = StoL(jt.getText()); System.out.println("l'entier Long: \t\t" + l); }
résultat parfait:
La chaine s : 129 98 287 nb dans la fonction: 12998287 l'entier Long: 12998287
ça n'a aucun sens qu ça fonctionne pas chez vous.
Si non, pouvez vous encore partager la partie du code qui implique le JFormattedTextField?
Being normal is boring... being geek is interesting