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

Beberto56 119 Messages postés mardi 8 avril 2008Date d'inscription 22 décembre 2008 Dernière intervention - 11 sept. 2008 à 14:45 - Dernière réponse :  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
Afficher la suite 

8 réponses

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

// ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Ombitious_Developper
Utilisateur anonyme - 11 sept. 2008 à 17:48
+2
Utile
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 /...
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 12 sept. 2008 à 07:22
0
Utile
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 /...
Commenter la réponse de Utilisateur anonyme
Beberto56 119 Messages postés mardi 8 avril 2008Date d'inscription 22 décembre 2008 Dernière intervention - 12 sept. 2008 à 10:07
0
Utile
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
Commenter la réponse de Beberto56
Utilisateur anonyme - 12 sept. 2008 à 10:41
0
Utile
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 /...
Commenter la réponse de Utilisateur anonyme
Beberto56 119 Messages postés mardi 8 avril 2008Date d'inscription 22 décembre 2008 Dernière intervention - 12 sept. 2008 à 14:23
0
Utile
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^^
Commenter la réponse de Beberto56
Utilisateur anonyme - 12 sept. 2008 à 19:41
0
Utile
Autre re,












double


tonDouble = 10.015000;


d = (

double

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

// 10.015000 --> 10.02

Cordialement.

...\ Dan /...
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 12 sept. 2008 à 19:53
0
Utile
Pardon,



il manque le type du  résultat d:

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

...\ Dan /...
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.