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 :

Pattern/Matcher de translittération


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut Pattern/Matcher de translittération
    Bonjour,
    je découvre les classes Java sur les expressions régulières qui semblent bien intéressantes mais j'avoue ne pas trouver de solution pour passer une chaine (ou partie de chaine) en majuscule/minuscule.

    En perl tr/a-z/A-Z/g, . Mais en Java ?

    le String.replaceAll() irait parfaitement mais mon utilisatoin est bien précise.
    J'utilise les expressions régulières pour des traitements par lots et passages successifs sur des chaines. Avec des regexps stockées en base de données.

    Une solution ?
    Merci d'avance à l'intérêt porté à la question.

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour:
    String.toLowerCase()
    String.toUpperCase()

    Pour l'appliquer à une partie de la chaine, il suffit de la matcher et d'effectuer un replace ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour:
    String.toLowerCase()
    String.toUpperCase()

    Pour l'appliquer à une partie de la chaine, il suffit de la matcher et d'effectuer un replace ...
    Je sais bien

    C'est justement çà que je ne veux pas faire : en traitement par lot je ne peux/veut pas utiliser du code Java, seulement des Regexp.
    En gros, je ne veux pas utiliser des fonctions de la classe String, uniquement de Pattern/Matcher.

  4. #4
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Donne-nous un exemple de chaine que tu aurais à traiter en indiquant quel motif représenterait la portion à passer en majuscule ou en minuscule.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    Ne serait-ce qu'une chaine en entier déjà.
    Regexp Java pour passer de
    Chuck
    à
    CHUCK

    ou de
    Chuck
    à
    chuck

    Même apparemment aussi basique je ne vois pas comment faire...

  6. #6
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Citation Envoyé par Le Mage Voir le message
    Ne serait-ce qu'une chaine en entier déjà.
    Regexp Java pour passer de
    Chuck
    à
    CHUCK

    ou de
    Chuck
    à
    chuck

    Même apparemment aussi basique je ne vois pas comment faire...
    En effet, de toute manière il faudra passer par les méthodes toLowerCase() et toUpperCase() de la classe String, mais c'est vrai que si tu veux extraire la portion de chaîne puis la réinjecter une fois traitée via l'API Regex c'est une solution valable.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    Donc c'est bien impossible en regex je suis pris au piège
    C'est dommage ... début des cas particuliers dans les regexp stockées alors.

    Merci à tous.

  8. #8
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Le Mage Voir le message
    Donc c'est bien impossible en regex je suis pris au piège
    Il est possible de faire plein de chose avec les regexp... mais il faut bien souvent y ajouter du code !

    Une regexp te permet seulement de recherche un morceau de texte, ensuite à toi de le traiter comme tu veux.


    Si j'ai bien compris tu veux rechercher une sous-chaine pour la mettre en majuscule :
    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
    	public static String toUpperCase(String str, String regexToUpper) {
    		// On recherche tout les mots correspondant au pattern :
    		Matcher m = Pattern.compile(regexToUpper).matcher(str);
    		if (m.find()) {
    			// S'il y en a au moins un, on crée un StringBuffer
    			// qui contiendra la chaine modifié :
    			StringBuffer buf = new StringBuffer(str.length());
    			do {
    				m.appendReplacement(buf, m.group().toUpperCase());
    			} while (m.find());
    			m.appendTail(buf);
    			return buf.toString();
    		}
    		return str; // aucun match : on retourne directement str;
    	}
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	String s = "Chuck Norris";
    	System.out.println( toUpperCase(s, "Chuck"));
    a++

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    Merci !
    et oui je vais être obligé de mettre des cas particuliers avec du code ... moi qui voulait en gros faire un for() d'un tableau de regexp pour les appliquer les unes après les autres, tant pis.

    J'aurais du le faire en Perl mais pour faire une interface graphique çà aurait été beaucoup plus pénible pour le coup

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    Post/Up pour une solution plus belle à mon problème

    http://sleep.hick.org/extra/Transliteration.html

    C'est une classe qui émule les translittérations en Java et elle s'avère très pratique.

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

Discussions similaires

  1. Java Pattern et matcher
    Par Bobble dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 31/05/2010, 15h00
  2. Utilisation de Matcher et Pattern, probleme de Regexp
    Par -ULK- dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/02/2009, 06h18
  3. utilisation des motifs et pattern (matcher)
    Par sabrinabest dans le forum Langage
    Réponses: 2
    Dernier message: 21/09/2007, 18h10
  4. JDK1.3 Pattern et Matcher
    Par Shabata dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 13/03/2006, 11h29
  5. [String] Pattern & Matcher
    Par jproto dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 08/01/2006, 21h58

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