Enlever les espaces au milieu d'un String
encours
Messages postés
159
Statut
Membre
-
encours Messages postés 159 Statut Membre -
encours Messages postés 159 Statut Membre -
Bonjour,
en java
je veux enlever les espaces au milieu du chiffre pour qu'il soit converti en double
j'ai essayé :
String r = monchiffre.replaceAll(" ",""); // erreur(il ne peut pas convertir : les espaces restent )
et aussi
String ch1 = "";
int l = monchiffre.length();
char c;
for(int i = 0 ; i < l ; i++){
c = ch.charAt(i);
if(c != ' '){ ch1 += c;}
} // aussi meme erreur (les espaces restent)
merci d'avance
en java
je veux enlever les espaces au milieu du chiffre pour qu'il soit converti en double
j'ai essayé :
String r = monchiffre.replaceAll(" ",""); // erreur(il ne peut pas convertir : les espaces restent )
et aussi
String ch1 = "";
int l = monchiffre.length();
char c;
for(int i = 0 ; i < l ; i++){
c = ch.charAt(i);
if(c != ' '){ ch1 += c;}
} // aussi meme erreur (les espaces restent)
merci d'avance
A voir également:
- Enlever les espaces au milieu d'un String
- Espaces insécables - Guide
- Enlever pub youtube - Accueil - Streaming
- Comment enlever les commentaires sur word - Guide
- Comment enlever un ami sur facebook - Guide
- Comment enlever une page sur word - Guide
3 réponses
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);
}
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
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);
}
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);
}
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);
}