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

avec Java Discussion :

Concaténation de chaine de caractère


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Concaténation de chaine de caractère
    Bonjour, voici un petit bout de programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String rqP="insert into perso values(null";
    		for(Enumeration<String> truc = VecPerso.elements(); truc.hasMoreElements();){
    			rqP+=",'"+truc.nextElement()+"'";
    		}
    		rqP+=");";
    		System.out.print(rqP);
    Cela marche parfaitement, là n'est pas la question.
    Avant de faire cela, j'utilisais la méthode concat() pour... concaténer mes chaines de caractère mais je n'obtenais que la chaine à l'initialisation. Ma question est donc Pourquoi ? Est-ce que, pour utiliser la méthode concat il y a des conditions particulières ? Si oui, lesquelles ?

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Pour faire ce que tu fais, le meilleur moyen et le plus propre est d'utiliser un StringBuilder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    StringBuilder sb_rqP = new StringBuilder("insert into perso values(null");
     
    for(Enumeration<String> truc = VecPerso.elements(); truc.hasMoreElements();){
        sb_rqP.append(",'"+truc.nextElement()+"'");
    }
     
    sb_rqP.append(");");
     
    System.out.print(sb_rqP.toString());
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si vous mettiez le code qui ne marche pas plutot que celui qui marche?

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par michon Voir le message
    Pour faire ce que tu fais, le meilleur moyen et le plus propre est d'utiliser un StringBuilder.
    il serait plus judicieux de l'utiliser comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    StringBuilder sb_rqP = new StringBuilder("insert into perso values(null");
    
    for(Enumeration<String> truc = VecPerso.elements(); truc.hasMoreElements();){
        sb_rqP.append(",'"+truc.nextElement()+"'");
        sb_rqP.append(",'");
        sb_rqP.append(truc.nextElement());
        sb_rqP.append("'");
    }
    
    sb_rqP.append(");");
    
    System.out.print(sb_rqP.toString());
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String rqP="insert into perso values(null";
    		for(Enumeration<String> truc = VecPerso.elements(); truc.hasMoreElements();){
    			rqP.concat(",'"+truc.nextElement()+"'");
    		}
    	rqP.concat(");");
    	System.out.print(rqP);

    Voici le code qui ne marche pas, soit des += qui se transforme en concat(...). Pas de différence flagrante.
    Je vais tester le StringBuilder. Mais cherche toujours à comprendre pourquoi le concat ne fonctionne pas.

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    erreur de débutant !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String rqP="insert into perso values(null";
    for(Enumeration<String> truc = VecPerso.elements(); truc.hasMoreElements(){
    rqP = rqP.concat(",'"+truc.nextElement()+"'");
    }
    rqP.concat(");");
    System.out.print(rqP);
    Le concat retourne la chaine modifié car les String sont immutable
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    concat() ne modifie pas la String sur laquelle tu l'appelles, car une String est immutable.

    concat() construit une nouvelle String et la renvoie. Il faut donc l'assigner quelque part, sinon ça sert à rien.

    (Mais bon, c'est nul de toute façon. Il vaut mieux passer par un StringBuilder. Si on se fout des performances, += est au moins plus clair.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour les réponse rapide, j'ai ce que je voulais, je vais passer par le stringBuilder car je me soucis des performances ^^

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    regarde plutot du coté de PreparedStatement pour éviter les embrouilles avec les requetes SQL

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2008, 10h10
  2. [Tableaux] Concaténation de chaine de caractéres
    Par Mo_Poly dans le forum Langage
    Réponses: 4
    Dernier message: 23/10/2007, 00h06
  3. Comment concaténer une chaine de caractères avec un espace ?
    Par blanchonvincent dans le forum MATLAB
    Réponses: 6
    Dernier message: 07/04/2007, 21h53
  4. Réponses: 2
    Dernier message: 02/04/2007, 11h07
  5. Réponses: 1
    Dernier message: 25/04/2006, 16h06

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