Suppression de la première lettre d'une chaine de caractère [Résolu]

Signaler
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008
-
 Utilisateur anonyme -
Bonjour,

voici le code sur lequel je travail :

b = b.replace(":", "");
if (b.equals("0000")) {
b = "R";
}
else{
if (b.equals("000")) {
b = "R";
}
else{
b = "J" + b;
}
}

En fait, je récupère une chaine de caractère qui est composée de 4 chiffres et je veut que lorsque ma chaine de caractère commence par un 0 il soit supprimé.

Donc si je récupère "0145" je veux affiché dans un jTextfield "145".

Est ce que quelqu'un pourrait me conseiller s'il vous plaît.

Merci d'avance.

Beberto56
A voir également:

8 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
35
Salut:

A mon avis, il faut délèguer ce type de test au composant et non au programme, comme ça tu n'as pas à se soucier.

public static class NumericDocument extends PlainDocument {
    @Override
     public void insertString(int offs, String str, AttributeSet attrs) throws BadLocationException {
         char c = str.charAt(0);

         if (!Character.isDigit(c)) {
             return;
         }
                     if (offs 0 && c '0') {
             return;
         }

         super.insertString(offs, str, attrs);
    }
}

// ...

JTextField numericField = new JTextField(25);
numericField.setDocument(new NumericDocument());

// ...

Bonjour,

Si :
String xxx = "0145";

Avec substring :

String substring(int1 indice initial, int2 indice final);
int1 et int2 indiquent le deplacement dans xxx et peuvent prendre les valeurs 0 à longueur de xxx , soit 4 dans notre cas et sachant que l'extraction termine à indice final - 1.
pour extraire 145 nous aurons int1 1 et int 2 4.

Mais nous ne sommes pas obligés de citer int2 si nous voulons tout de 1 jusqu'à la fin .

String xxx2 = xxx.substring(1,4);
ou
String xxx2 = xxx.substring(1);

On extrait 145 de xxx dans xxx2.

Cordialement.

...\ Dan /...

Bonjour ombitius,

Évidemment, c'est classe, d'autant plus que ma réponse n'est pas complète car la première chose à faire serait de tester si xxx = "0000" et si oui forcer xxx2 à "" et sortir ;  si non voir si xxx commece par "0" et si oui extraire dans xxx2, comme indiqué ci-dessus et voir si à son tour xxx2 ne commence pas par "0" etc...

Je reste à la disposition de beberto56 s'il de souhaite.

Cordialement.

...\ Dan /...
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008

Re,

Tout d'abord merci pour votre aide. Dan j'ai utilisé ta méthode cela fonctionne parfaitement mais j'ai un petit soucis je n'arrive pas à tester si la première lettre de a est 0 ou non j'ai essayé :

if(a.substring(1).equals("0")){
a1 = a.substring(1);
a1 = "J" + a1;
}
else
{
a1 = a;
a1 = "J" + a1;
}

mais cela ne fonctionne pas il passe toujours dans le else si tu peut me conseiller stp.

Encore merci.

Beberto56

Re bonjour,

Tu peux savoir si a commence par "0" par exemple avec int indexOF(String str) :

-int  indice; String str = "0";


indice a.indexOf(str);  ou bien indice a.indexOf("0");

Nous recherchons l'adresse d'un 1er "0" éventuel. L'adresse de ce "0" est fournie dans indice.
si indice = 0, le "0" est en 1ere position.

Autre manière de le savoir:

char charAt(int indice);

exemple : char car;
               car = a.charAt(0); car contient la valeur du 1er caractère. Si c'est '0' .....


Cordialement,



...\ Dan /...
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
22 décembre 2008

Re c'est bon j'ai trouvé

je voulais vous demander une autre petite subtilité.
En fait dans mon programme j'ai un accès à base de données ou je récupère dans un champs de texte des taux horaire avec 6 chiffre après la virgule or je voudrais en afficher seulement 2 et je ne trouve pas le moyen de le faire.

Exemple je récupère 10.010000 et je voudrais affiché 10.01

Si vous pouvez me renseigner je vous en serais reconnaissant.

Merci d'avance

Beberto56^^

Autre re,












double


tonDouble = 10.015000;


d = (

double

) Math.round(tonDouble * 100) / 100;

// 10.015000 --> 10.02

Cordialement.

...\ Dan /...

Pardon,



il manque le type du  résultat d:

Ïdoubled = (
double
) Math.round(tonDouble * 100) / 100; // 10.015000 --> 10.02

...\ Dan /...