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

Langage Java Discussion :

Utiliser un string dans un new


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut Utiliser un string dans un new
    Bonjour, j'utilise une base de données postgresql, et a un moment donné, je récupère la chaine de caractères "POINT(-1.68 48.18)" en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AsText(nomColonne) FROM nomTable
    avec cette chaine, je voudrais créer un nouveau point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Point p = new Point(-1.68, 48.18);
    Je sais qu'il suffirait que j'extrais les 2 doubles de la string puis de les passer en paramètres du constructeur, mais j'aurais aimé savoir s'il est possible d'intégrer la string recue directement dans la création du point, cad avoir :
    [CODE]Point p = new "Point(-1.68 48.18);"[CODE]

    En gros, j'voudrais savoir s'il existe une fonction qui permette d'intégrer directement un string dans l'instanciation d'un objet...

    Si ce n'est pas possible, savez vous comment réupérer rapidement les 2 réels ? J'pense savoir a peu près comment faire en parcourant chaque caractère, mais c'est long pour pas grand chose...

    Merci de votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut
    rha, question con, j'viens de me rendre compte que meme si ca existe, va falloir que je rajoute une virgule entre les 2 paramètres, et sans doute aussi mettre "POINT" en minuscule donc en fait c'est aussi simple que je réupère les 2 doubles...

    Par contre si quelqu'un connait un moyen qui permet de faire quand meme ce que j'ai expliqué, ca m'intéresse

    Et sinon, ben le moyen le plus simple pour récupérer les 2 doubles du coup, ca m'intéresse toujours, merci

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Tu peux le faire en utilisant une expression régulière par exemple
    Il suffit juste que tu détermines quelles sont tous les cas valident par rapport à tes enregistrements.

    Par exemple, est ce que tu peux avoir les cas suivant

    +1.45
    .45
    -.45
    ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut
    merci pour ta réponse rapide zorm

    a priori non je pense pas, j'aurais 0.45 ou -0.45 dans ce cas il me semble...

    je ne connais pas les expressions régulières, ca marche comment ?

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Pour les expression régulière regarde les classe Pattern et Matcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    double x = 0.0;
    double y = 0.0;
    Matcher matcher = Pattern.compile("-?\\d+(\\.\\d+)?");
    if(matcher.find()) {
        x = Double.parseDouble(matcher.group());
        if(matcher.find()) {
            y = Double.parseDouble(matcher.group());
        }
    }
    Voir également : Expressions régulières avec l'API Regex.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut
    ok merci, je vais essayer de regarder ca, ca a l'air compliqué ce truc lol

  7. #7
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Si tu veux faire plus simple mais peut-être moins direct, tu peux remplacer les parenthèses par des espaces puis splitter la String sur ces espaces pour récupérer les valeurs numériques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String str = "POINT(-1.68 48.18)";
     
    String[] tmp = str.replace("(", " ").replace(")", " ").split(" ");
    float x = Float.parseFloat(tmp[1]);
    float y = Float.parseFloat(tmp[2]);

  8. #8
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Effectivement, cette solution marche aussi mais le risque, c'est que l'on dépend dans ta solution de la structure du String et non pas de la syntaxe d'un type Double.
    Il suffit qu'un jour, il décide de remplacer POINT(-1.68 48.18) par {-1.68 48.18}:POINT et pouf, l'appli plante. Si tu n'as que quelques classes, le debugage pourra etre rapide mais sur une grosse appli, ça peut prendre des heures, voir des jours avant de situer l'erreur dans le code.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut
    ok, merci pour toutes ces précisions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    double x = 0.0;
    double y = 0.0;
    Pattern pattern = Pattern.compile("?\\d+(\\.\\d+)?");
    Matcher matcher = pattern.matcher(st);
    if(matcher.find()) {
        x = Double.parseDouble(matcher.group());
        if(matcher.find()) {
            y = Double.parseDouble(matcher.group());
        }
    }
    j'ai mis ce code et ca marche, mais j'ai quand meme essayé de décoder l'espression régulière du pattern, mais j'ai un peu de mal, j'ai compris jusqu'au 1er d, après je sais pas ce que ca représente, si quelqu'un pouvait m'eclairer merci

  10. #10
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Alors, déjà quand tu vois ?, il faut le comprendre comme une cardinalité 0 ou 1
    donc "-?" signifie, soit j'ai un -, soit j'ai rien
    Le \d est un raccourcie pour tout les chiffres de 0 à 9, que l'on aurait pu écrire aussi [0-9]
    Le + est une cardinalité "au moins 1 élément"
    donc "\\d+" se comprend qu'il faut au moins 1 chiffre mais qu'il peut y en avoir plusieur.

    Les parenthèses forment un groupe.
    \. correspond au caractère ".". Si tu mets pas le backslash, le point est un caractere special qui veut dire n'importe quel caractère.

    Donc (\\.\\d+)? veut dire soit on a un point et au moins 1 chiffre après, soit on a rien.

    Donc l'expression régulière va autoriser les chaines suivantes:
    0.45
    -0.45
    1
    -1
    15416545665.15456456465
    -2156444
    .....

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 8
    Points
    8
    Par défaut
    ok merci, en fait j'avais rien compris ^^

    sur le pdf que le y@m's m'a filé, ils disent que le ? remplace exactement un caractère, donc je pensais que ca voulait dire qu'il pouvait y avoir n'importe quoi avant les chiffres puis ensuite une série de chiffres (\\d) ca j'avais compris, et après je comprenais pas le truc des parentheses, et le . en effet je pensais qu'il remplacait tout caractère, donc je comprenais rien, mais la ok, j'ai tout compris, merci

    merci beaucoup à tous, problème résolu

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

Discussions similaires

  1. Réponses: 165
    Dernier message: 03/09/2009, 16h35
  2. Utiliser un string dans une fonction de setInterval
    Par strat0 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 02/08/2007, 18h56
  3. Utilisation dynamique de String dans un <select>
    Par NikoBe dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 24/10/2006, 17h25
  4. utilisation de guillemet dans une string
    Par robert_trudel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/10/2006, 11h09
  5. Réponses: 7
    Dernier message: 25/11/2005, 18h11

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