Extraction de données d'une String [Résolu]

Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Dernière intervention
26 juillet 2011
- 26 juil. 2011 à 15:43 - Dernière réponse :
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 27 juil. 2011 à 14:29
Bonjour,

J'ai une JCombobox Chargé de données sql :
(exemples)
1 - A4 80 grs Blanc (ramette de 500) *
220 - SAC KRAFT 229X324 90 GRS AC X 250 *

Sur ces données, je doit extraire juste le nom du produit (donc laisser de coté le chiffre et le tiret au début avec les espaces).

J'ai pensé a utiliser la classe StringTokenizer, mais je n'arrive pas a obtenir l'effet escompté ... voici mon code :

StringTokenizer st = new StringTokenizer(saisie.CEntLibProd.getSelectedItem().toString(), " - ");
        st.nextToken();
        String libprod = st.nextToken();


et Voila ce que j'obtiens avec un traitement sur mon premier exemple :
A4

Auriez-vous des idées pour m'aiguiller ?
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 26 juil. 2011 à 15:54
3
Merci
Bonjour,

Les StringTokenizer découpent la chaine en fonction des caractères, Le délimiteur " - " signifie que le caractère qui délimite un mot est soit un espace soit un - soit un espace.

Pour faire ce que tu veux, tu vas devoir utiliser les expressions régulières et la méthode split de la classe String :

String chaine="1 - A4 80 grs Blanc (ramette de 500) *";
String[] res=chaine.split("\\p{Space}-\\p{Space}");
for(String s:res){
    System.out.println(s);
}


Résultat de l'output :
1
A4 80 grs Blanc (ramette de 500) *

La valeur que tu cherches à récupérer est donc res[1]

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Dernière intervention
26 juillet 2011
- 26 juil. 2011 à 16:08
0
Merci
Daccord merci beaucoup, mais cela sera-t-il la meme chose pour :
220 - SAC KRAFT 229X324 90 GRS AC X 250 * ?

du fait qu'il y a 2 chiffres de plus, qur la taille de la String n'est pas pareille ?
Commenter la réponse de H4rDBuG
Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Dernière intervention
26 juillet 2011
- 26 juil. 2011 à 16:16
0
Merci
Je viens d'essayé, et ça marche niquel, quelque soit la longueur de la String !
Merci beaucoup a toi Julien39, on se verrais IRL je te paierais une bière pour toutes les fois ou tu m'as aidé :)

Bonne continuation
Commenter la réponse de H4rDBuG
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 27 juil. 2011 à 14:29
0
Merci
Oui, ca fonctionne quel que soit la longueur de la chaine de caractères avant.

\\p{Space}-\\p{Space} signifie un espace (tabulation, espacement...) un tiret puis un autre espace.

Cette expression est recherchée dans la chaine de caractères et la chaine est découpée grâce à ce séparateur. Attention a ne pas ajour une ligne qui contient deux fois cet enchainement, dans ce cas, le nom sera tronqué.
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 27 juil. 2011 à 14:29
0
Merci
Si tu veux en savoir un peu plus sur les expressions régulières, j'ai fait il y a un moment un tutoriel très simple, c'est vraiment la base : http://www.javafr.com/codes/EXPRESSIONS-REGULIERES-JAVA-DEBUTANT_53314.aspx
Commenter la réponse de cs_Julien39

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.