[Java] Isoler proprement un motif dans une String

Isoler proprement un motif dans une String [Java] - Java - Programmation

Marsh Posté le 08-06-2004 à 10:11:44    

en gros g une entrée utilisateur dont je dois vérifier la validité.
 
Elle doit etre de la forme :  
Fabricant/Plateforme/
 
- Les / finaux sont optionnels (c facile de détecter si ils manquent et de les rajouter)
- la plateforme en elle même est facultative
- la fabricant comment forcément par une majuscule...
- pour la gag, le fabricant peut contenir des caractères non alphabétiques ( - par exemple, comme Sony-Ericsson)
 
Ex :  
Nokia  (valide)
Nokia/ (valide)
Nokia/s40/ (valide)
Nokia/s40  (valide)
Nokia/s40/6100 (non valide, il ne doit rien y avoir après la plateforme)
nokia (invalide, doit commencer par une majuscule)
Nokia\s40 (invalide, il faut des /)
 
G essayé avec des regexp, mais g tjs que des matches partiels, j'arrive jamais à avoir un match total...
 
Je vois pas comment faire...je fais mumuse avec l'applet de Jakarta ORO depuis tt à l'heure, mais imposible de trouver


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-06-2004 à 10:11:44   

Reply

Marsh Posté le 08-06-2004 à 10:46:41    

pour le moment g ça
 
[A-Z]\w+.?\w*/(\w+/?\B)?
 
ca marche à peut près, si ce n'est que la string doit forcément se terminer par /, et je comprends pas pkoi à cause du ? qui dit qu'elle est optionelle normalement...
 
mais au moins elle rejette Nokia/s40/fff, et c ce que je voulais le plus...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-06-2004 à 10:50:25    

Machin ::= Fabricant | Fabricant '/' Plateforme
Fabricant ::= CAPITALE Fabricant_suite
Fabricant_suite ::=  
  | Fabricant_suite
  | CAPITALE
  | MINUSCULE
  | CHIFFRE
Plateforme ::= ...
 
 
un truc du genre quoi.
 


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-06-2004 à 11:12:05    

euh new StringTokenizer(s, "/", false) ? [:mlc]
suivi de validations "manuelles"? :o


Message édité par the real moins moins le 08-06-2004 à 11:12:29

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-06-2004 à 11:18:01    

the real moins moins a écrit :

euh new StringTokenizer(s, "/", false) ? [:mlc]
suivi de validations "manuelles"? :o


Avec la 1ère validation consistant à regarder si le nombre de tokens est supérieur à 2. Mais pour la deuxième (caractères alphanum seulement), soit tu te tapes une boucle sur les caractères de ta chaîne, soit tu fais une regexp.
Donc ça revient à peu près au même, avec la *légère* différence de savoir si le développeur maîtrise les regexp ou non :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 08-06-2004 à 16:11:28    

ben c bon en gros g une regexp qui me fournit ca (entre temps le cp a voulu que ca gère les révisions de plateformes)
 
Donc :  
[A-Z]\w+.?\w*/\w+/(\d/\z)?
 
Qui match :  
- Nokia/s40/
- Nokia/s40/1/
 
en fait g bcp progressé depuis que je fais plus confiance à Oro : pour une raison X, ce truc passe avec les regexp de java, pas celle d'Oro...
 
l'avantage de la regexp c qu'en une ligne c torché...si je dois me taper des boucles de char avec des ifs dans tt les sens, je v faire un code largement aussi porcin, et totalement aussi illisible
 


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-06-2004 à 16:16:14    

J'dirais quand même pas que c'est moins lisible avec une boucle. Le gars qui connaît Java, il sait "décypter" la boucle même s'il connaît pas les regexp. Par contre, les regexp, à lire... c'est long et chiant et faut un manuel à côté :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 08-06-2004 à 16:16:18    

t'as interet à écrire une belle batterie de tests pour prévenir tout dérapage de clavier le jour ou tu modifieras ton code..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-06-2004 à 22:05:55    

j'écris tjs la regexp en clair dans un commentaire...
 
--> -- : note pour plus tard : apprendre à faire des tests unitaires (ca a l'air génial et je suis sur que je me ferais moins chier, mais g pas trop le temps en ce moment)


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-06-2004 à 22:10:18    

Jubijub a écrit :

j'écris tjs la regexp en clair dans un commentaire...

jusqu'a ce que tu oublies de la mettre à jour.
(demain maxi)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-06-2004 à 22:10:18   

Reply

Marsh Posté le 08-06-2004 à 22:12:34    

'tain, je vous propose une super définition sémantique et tout et vous faites de regexes à la con.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-06-2004 à 22:18:23    

nraynaud a écrit :

'tain, je vous propose une super définition sémantique et tout et vous faites de regexes à la con.

heho :o
 
 
pis ton truc c'est tout aussi imbitable :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-06-2004 à 22:48:55    

the real moins moins a écrit :


pis ton truc c'est tout aussi imbitable :o

et ta mère elle^W^W^Wnon rien.
 
 
http://leocat.free.fr/shadok/generalites/images/shadok10.jpg


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-06-2004 à 23:12:34    

nraynaud a écrit :

'tain, je vous propose une super définition sémantique et tout et vous faites de regexes à la con.


 
bin elle est nickel c'est sur mais bon a mon avis il préfèrerait un bout de code tu vois [:itm]

Reply

Marsh Posté le 08-06-2004 à 23:16:40    

DarkLord a écrit :

bin elle est nickel c'est sur mais bon a mon avis il préfèrerait un bout de code tu vois [:itm]

ça prend 15s à traduire en CPS ça /o\


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 09-06-2004 à 13:53:13    

j'y connais rien à tes trucs :D  
 
Pis vu les contraintes qu'a rajouté le CP sur une def de plateforme, une regexp = 1 ligne, en code ca me prendrait surement 30 lignes....


---------------
Jubi Photos : Flickr - 500px
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed