Enlever les espaces au milieu d'un String
Fermé
encours
Messages postés
121
Date d'inscription
mercredi 3 août 2011
Statut
Membre
Dernière intervention
31 mars 2014
-
Modifié par encours le 9/08/2011 à 19:33
encours Messages postés 121 Date d'inscription mercredi 3 août 2011 Statut Membre Dernière intervention 31 mars 2014 - 10 août 2011 à 11:19
encours Messages postés 121 Date d'inscription mercredi 3 août 2011 Statut Membre Dernière intervention 31 mars 2014 - 10 août 2011 à 11:19
A voir également:
- Enlever les espaces au milieu d'un String
- Meilleur smartphone milieu de gamme - Guide
- Enlever logo tiktok - Guide
- Enlever mot de passe windows 10 - Guide
- Cannot access offset of type string on string - Forum PHP
- Comment enlever un espace dans un nombre ✓ - Forum Excel
3 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
9 août 2011 à 19:54
9 août 2011 à 19:54
Normalement replaceAll doit marcher, en fait cela dépend surtout du format de monchiffre...
public static void main(String...args)
{
String
s1 = "123 456 789.012",
s2 = s1.replaceAll(" ","");
Double d = Double.parseDouble(s2);
System.out.println(d);
}
encours
Messages postés
121
Date d'inscription
mercredi 3 août 2011
Statut
Membre
Dernière intervention
31 mars 2014
1
9 août 2011 à 22:15
9 août 2011 à 22:15
d'abord merci pour l'intervention
j'ai essayé ce que tu as ecrit ca marché
mais pour mon cas malheureusement ca na pas marché (les espaces restent ) :
je pense c'est parsque monchiffre est retourné par cette methode
String de(double a ){
DecimalFormat df = new DecimalFormat("#,##0.00");
String dd = df.format(a);
String qs = dd.replace("," , ".");
return qs ;
}
et je peux pas l'annuler car je fais une application financiere ou je dois avoir cette facon d'ecriture
et l'espace generé par cette DecimalFormat est "particulier"
si tu as une idée ou quelqu'un d'autre merci bien de la partager
j'ai essayé ce que tu as ecrit ca marché
mais pour mon cas malheureusement ca na pas marché (les espaces restent ) :
je pense c'est parsque monchiffre est retourné par cette methode
String de(double a ){
DecimalFormat df = new DecimalFormat("#,##0.00");
String dd = df.format(a);
String qs = dd.replace("," , ".");
return qs ;
}
et je peux pas l'annuler car je fais une application financiere ou je dois avoir cette facon d'ecriture
et l'espace generé par cette DecimalFormat est "particulier"
si tu as une idée ou quelqu'un d'autre merci bien de la partager
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
9 août 2011 à 22:40
9 août 2011 à 22:40
En fait c'est parce que Java utilise l'Unicode pour l'encodage des caractères.
Les espaces qui apparaissent avec ton DecimalFormat ce n'est pas l'espace traditionnel (un byte 32), mais une combinaison de bytes au format Unicode (-62 puis -96)
Il faudrait donc plutôt utiliser ce genre de transformation :
Les espaces qui apparaissent avec ton DecimalFormat ce n'est pas l'espace traditionnel (un byte 32), mais une combinaison de bytes au format Unicode (-62 puis -96)
Il faudrait donc plutôt utiliser ce genre de transformation :
public static void main(String...args)
{
String s1 = de(1234567.89);
System.out.println(s1);
String s2 = s1.replaceAll(new String(new byte[] {-62,-96}), "");
System.out.println(s2);
Double d = Double.parseDouble(s2);
}
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
Modifié par KX le 9/08/2011 à 23:28
Modifié par KX le 9/08/2011 à 23:28
Une alternative intéressante pourrait être de modifier légèrement ta méthode de, pour directement mettre des espaces classiques à la place des espaces par défaut (de même que tu l'as fait pour remplacer la virgule par le point)
static String de2(double d)
{
DecimalFormat df = new DecimalFormat("#,##0.00");
DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
dfs.setDecimalSeparator('.');
dfs.setGroupingSeparator(' ');
df.setDecimalFormatSymbols(dfs);
return df.format(d);
}
public static void main(String...args)
{
String s1 = de2(1234567.89);
System.out.println(s1);
String s2 = s1.replaceAll(" ", "");
System.out.println(s2);
}
encours
Messages postés
121
Date d'inscription
mercredi 3 août 2011
Statut
Membre
Dernière intervention
31 mars 2014
1
10 août 2011 à 11:19
10 août 2011 à 11:19
merci bien KX cette de2 a bien marché
voici maitenant mes 2 methodes :
// pour le format
String de(double d ){
DecimalFormat df = new DecimalFormat("#,##0.00");
DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
dfs.setDecimalSeparator('.');
dfs.setGroupingSeparator(' ');
df.setDecimalFormatSymbols(dfs);
return df.format(d);
}
// pour avoir le double
double clc_de(String a ){
String f = a.replaceAll(" ","");
return Double.parseDouble(f);
}
voici maitenant mes 2 methodes :
// pour le format
String de(double d ){
DecimalFormat df = new DecimalFormat("#,##0.00");
DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
dfs.setDecimalSeparator('.');
dfs.setGroupingSeparator(' ');
df.setDecimalFormatSymbols(dfs);
return df.format(d);
}
// pour avoir le double
double clc_de(String a ){
String f = a.replaceAll(" ","");
return Double.parseDouble(f);
}