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

H4rDBuG 47 Messages postés jeudi 14 janvier 2010Date d'inscription 26 juillet 2011 Dernière intervention - 26 juil. 2011 à 15:43 - Dernière réponse : cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention
- 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 

5 réponses

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 26 juil. 2011 à 15:54
+3
Utile
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]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
H4rDBuG 47 Messages postés jeudi 14 janvier 2010Date d'inscription 26 juillet 2011 Dernière intervention - 26 juil. 2011 à 16:08
0
Utile
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
H4rDBuG 47 Messages postés jeudi 14 janvier 2010Date d'inscription 26 juillet 2011 Dernière intervention - 26 juil. 2011 à 16:16
0
Utile
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
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 27 juil. 2011 à 14:29
0
Utile
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
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 27 juil. 2011 à 14:29
0
Utile
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.