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 :

substitution String avec regex, possible ?


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Par défaut substitution String avec regex, possible ?
    Bonjour à tous,

    Voila je tourne un peu en rond depuis quelques jours. J'ai fait un algo pour faire de la substitution qui me semble pas super optimisé, et j'ai vraiment l'impression de réinventer la roue.

    Voici ce que j'aimerai faire :
    " - - " + "01 01 2007" = 01/01/2007

    J'avais pensé à l'API regex de java.util, qu'en pensez-vous ?

    Merci bcp par avance.

  2. #2
    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,


    J'ai du mal à comprendre ce que tu veux faire exactement !

    a++

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    J'ai du mal à comprendre ce que tu veux faire exactement !

    a++
    a mon avis, il veut reinventer scanf et printf...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre éprouvé Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Par défaut
    Citation Envoyé par kalou
    " - - " + "01 01 2007" = 01/01/2007
    Je ne comprends pas la logique
    Ca devrait pas donner 01-01-2007?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Par défaut
    Oui pardon, en effet :

    " / /" + "01 01 2007" = "01/01/2007"

    Désolé pour le manque d'explication, mais en gros je souhaite remplacer les espaces de la chaine "01 01 2007" par les slashs du template "<espace><expace>/<espace><espace>/". Est-ce plus clair ?

    Merci d'avance.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Par défaut
    Je crois que tu approches le probleme du mauvais angle. Voici des solutions qui pourrait aider.

    Tu sais comment est formatte la date et tu veut remplacer les espaces par des slashs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "01 01 2007".replace(' ','/');
    Tu connais la date et tu veut la formatter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String.format("%02d/%02d/%04d",1,1,2007);
    Tu sais comment est formatte la date est tu veut la connaitre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String[] date = "01 01 2007".split(" ");
    int jour = Integer.valueOf(date[0]).intValue();
    int mois = Integer.valueOf(date[1]).intValue();
    int annee = Integer.valueOf(date[2]).intValue();

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Par défaut
    Merci pour ces informations.

    Le String.format me semblait pas mal, mais n'est pas implémenté en 1.4.2 ; j'ai comme contrainte java 1.4.2.

    En fait, je souhaite faire quelque chose de générique, pas forcement liè à une date, et donc le template passé comme la chaine à traiter ne sont pas connus d'avance, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "  :  " + "01 01" = "01:01"
    "   . " + "100 1" = "100.1"
    "  /  /    " + "01 01 2000" = "01/01/2000"
    Je pensais aussi à System.out.printf ou à System.out.format mais j'avoue que j'ai un peu du mal avec les synthaxes.

    Merci pour votre aide.

  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
    Citation Envoyé par kalou
    Je pensais aussi à System.out.printf ou à System.out.format mais j'avoue que j'ai un peu du mal avec les synthaxes.
    System.out.printf() et System.out.format() utilise la classe Formatter de Java 5.0 tout comme String.format()...


    Pour en revenir à ton problème, je ne pense pas que les regexp soient utiles dans ton cas, parce que tu ne te bases pas sur la chaine en elle même mais sur les positions des caractères...

    Donc une simple boucle de traitement serait amplement suffisante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public static String transform(String pattern, String value) {
    		StringBuffer buffer = new StringBuffer(value);
     
    		// On parcours les caractères du pattern :
    		for (int i=0; i<pattern.length(); i++) {
    			// Si le pattern comporte autre chose qu'un espace,
    			// et que la chaine comporte un espace, on remplace :
    			if (pattern.charAt(i)!=' ' && buffer.charAt(i)==' ') {
    				buffer.setCharAt(i, pattern.charAt(i));
    			}
    		}
    		return buffer.toString();
    	}
    a++

Discussions similaires

  1. RegEx pour lire une string avec des lignes
    Par Bacube dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/05/2012, 16h20
  2. Filtrer string avec regex
    Par willythe88 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/01/2010, 11h08
  3. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  4. Réponses: 2
    Dernier message: 29/03/2004, 13h44
  5. string avec Dev-C++ 4
    Par Shadow Blade dans le forum Dev-C++
    Réponses: 15
    Dernier message: 20/03/2003, 18h50

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