IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Aide expression régulière


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Aide expression régulière
    Salut...

    Voilà j'aurais besoin de splité cette string : "msg.key.used" en ceci :

    msg.
    key.
    used.

    Donc en gardant les points à la fin de chaque mot, seulement le problème c'est que la méthode split() supprime ces points, et n'ayant jamais utilisé d'expressions régulières, je séche un peu... Vous pouvez me donner un coup de main ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Une solution possible, peut-être pas la meilleure mais bon, au moins tu apprends quelque chose, serait d'utiliser substring(int debut, int fin) en passant les positions des différents '.'

    pour obtenir ces positions, utilises simplement indexOf('.') sur ta chaîne.

    le soucis est alors que ta chaîne ne doit pas contenir de '.' parasite sinon c'est faussé :/

    Tu peux également jeter un œil à la javadoc de StringTokenizer

  3. #3
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Tu peux aussi regarder du côté de ce tutorial sur les expressions régulières

    Tuto regex

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 45
    Points
    45
    Par défaut
    Super Sironimo c'est exactement se qu'il me faut ^^

    Et merci à Napalm aussi, seulement il y a effectivement les "." parasites ^^ mais merci quand même

  5. #5
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    De rien ravi d'avoir pu aider, n'oublie pas le tag résolu pour ton sujet

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 45
    Points
    45
    Par défaut
    Ouais mais non ^^ dsl j'ai eu beau parcourir le tuto, je vois pas la solution...

    Enfaite je pars peut-être pas sur la bonne voie, vous pourrez peut etre m'éguiller autrement. Enfaite se que je veux faire, c'est ceci :

    - J'ai ma string qui ressemble à ceci : msg.la.string.de.base

    Et j'aimerais obtenir la string suivante : msg.La.String.De.Base

    En gros, placer une majuscule après chaque point...

    J'avais pensé splitter sur le point, mettre la première lettre en majuscule puis reconstruire ma string, mais je n'y arrive pas avec les expressions régulière... C'est possible, je le sais, mais étant donné que je n'en ai jamais utilisé, je vois pas vraiment le truc... Vous avez peut-etre une solution ?

    Merci

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Les expressions régulières permettent de rechercher des motifs (et c'est déjà très bien). Pour ce qui est de transformer des minuscules en majuscules, il va falloir chercher ailleurs par contre: les expressions régulières (du moins seules) ne suffiront pas.

    Mais puisque tu as ton algorithme, pourquoi ne pas le coder en java "standard":

    - parcours de la chaîne jusqu'à trouver un point
    - mettre la lettre suivante en majuscule
    - recommencer la recherche jusqu'à la fin

    Il n'y a pas de difficulté majeure

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par CyberChouan Voir le message
    Les expressions régulières permettent de rechercher des motifs (et c'est déjà très bien). Pour ce qui est de transformer des minuscules en majuscules, il va falloir chercher ailleurs par contre: les expressions régulières (du moins seules) ne suffiront pas.
    En utilisant les expressions régulières pour rechercher les motifs on peut très facilement les mettre en majuscule pour reconstruire la chaine !

    Bien sûr je ne pense pas que ce soit possible avec un simple replaceAll() mais ce n'est pas très dur à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    	public static String transform(String input) {
    		// On recherche tous les 'points' suivi d'un caractère :
    		Pattern p = Pattern.compile("\\.\\p{L}");
    		Matcher m = p.matcher(input);
     
    		// Si on trouve au moins un élément correspond :
    		if (m.find()) {
    			// On crée un StringBuffer avec lequel on va construire la nouvelle chaine :
    			StringBuffer sb = new StringBuffer();
    			do {
    				// On ajoute le texte en remplacant le terme trouvé
    				// par son équivalent en majuscule :
    				m.appendReplacement(sb, m.group().toUpperCase());
     
    			} while (m.find()); // Et on boucle tant qu'on a des éléments
    			// On complète la chaine avec la fin de chaine éventuelle
    			m.appendTail(sb);
    			// Et on retourne la nouvelle chaine ainsi créé
    			return sb.toString();
    		}
    		// Et si on ne trouve aucun terme on renvoit la chaine directement :
    		return input;
    	}
    Ce type de code est assez "standard" dès lors qu'on veut faire un remplacement un peu plus évolué. Il y a alors deux ligne à changer :
    • Le pattern, afin de spécifier ce qu'on veut rechercher
    • Le appendReplacement(), afin de faire le remplacement de son choix


    Et pour info le \\p{L} de l'expression régulière représente toutes les lettres unicodes...

    a++

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    merci de l'info, je note ce bout de code dans un coin

  10. #10
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Bien sûr je ne pense pas que ce soit possible avec un simple replaceAll() mais ce n'est pas très dur à faire
    C'est ce que je voulais dire en disant que les expressions régulières "seules" ne permettraient pas de transformer des minuscules en majuscules via une méthode pré-existante en java qui tiendrait en une ligne. Il faut broder un peu autour (comme avec le code que tu donnes ).

    Merci d'avoir précisé mon post incomplet!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide Expression régulière
    Par Stef784ever dans le forum Langage
    Réponses: 11
    Dernier message: 15/04/2011, 11h16
  2. Aide Expression Régulière
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2011, 15h49
  3. aide expression régulière
    Par neg12 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2011, 16h39
  4. aide expression régulière
    Par viny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2008, 18h55
  5. aide expression régulières
    Par mehdiing dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/04/2008, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo