Suppression de la première lettre d'une chaine de caractère

Résolu
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008 - 11 sept. 2008 à 14:45
 Utilisateur anonyme - 12 sept. 2008 à 19:53
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

8 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
11 sept. 2008 à 23:02
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());

// ...
3
Utilisateur anonyme
11 sept. 2008 à 17:48
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 /...
2
Utilisateur anonyme
12 sept. 2008 à 07:22
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 /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
12 sept. 2008 à 10:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 sept. 2008 à 10:41
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 /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
12 sept. 2008 à 14:23
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^^
0
Utilisateur anonyme
12 sept. 2008 à 19:41
Autre re,












double


tonDouble = 10.015000;


d = (

double

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

// 10.015000 --> 10.02

Cordialement.

...\ Dan /...
0
Utilisateur anonyme
12 sept. 2008 à 19:53
Pardon,



il manque le type du  résultat d:

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

...\ Dan /...
0
Rejoignez-nous