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 :

Transformer un String en Long -> NumberFormatException


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut Transformer un String en Long -> NumberFormatException
    Bonjour,

    J'ai besoin de transformer un String en Long. Je récupére mon String d'une base de données. Elle est donc variable mais a toujours à peu prés cette forme (les chiffres peuvent changer) : "CRONT160820050001"

    J'ai donc essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Long idIncidentLong = new Long (idIncident);
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Long.valueOf(idIncident)...
    Mais à chaque fois j'ai une erreur
    java.lang.NumberFormatException: For input string: "CRONT160820050001"
    J'ai cherché un peu sur mon ami mais je n'ai pas de virgule qui puisse géner dans ma variable d'aprés ce que j'ai pus voir.

    Qu'est ce que j'ai loupé ?

    Merci

  2. #2
    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 : 42
    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
    Par défaut
    "CRONT160820050001" ne représente pas un long car il y a des lettres dans le tas, il faut d'abord que tu les enlèves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String originalString = "CRONT160820050001";
     
    // on remplace tout les caractères qui ne sont pas des chiffres
    String stringWithDigitOnly = originalString.replaceAll("\\D", ""); 
     
    Long l = Long.parseLong(stringWithDigitOnly);
    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 :resolu:

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

  3. #3
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut
    Citation Envoyé par le y@m's
    "CRONT160820050001" ne représente pas un long car il y a des lettres dans le tas, il faut d'abord que tu les enlèves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String originalString = "CRONT160820050001";
     
    // on remplace tout les caractères qui ne sont pas des chiffres
    String stringWithDigitOnly = originalString.replaceAll("\\D", ""); 
     
    Long l = Long.parseLong(stringWithDigitOnly);

    Ca marche bcp mieux
    Merci

  4. #4
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Pour parser un String en Long, il faut que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long l = Long.parseLong(taChaine);
    Mais ta chaîne a tout d'abord besoin d'un traitement, il faut que tu supprimes "CRONT" avant.
    Si "CRONT" précède toujours ton id, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laChaine = laChaine.replaceAll("\\w+","");
    Et ensuite le parseLong...

  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 : 42
    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
    Par défaut
    Citation Envoyé par sozie9372
    Pour parser un String en Long, il faut que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long l = Long.parseLong(taChaine);
    Long.valueOf(String) c'est bon aussi, par contre je ne sais pas s'il y a une différence (performance ?) entre les deux.
    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 :resolu:

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

  6. #6
    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 : 42
    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
    Par défaut
    Je viens de vérifier la Javadoc et la méthode valueOf revient à faire :
    Citation Envoyé par Javadoc
    In other words, this method returns a Long object equal to the value of:

    new Long(Long.parseLong(s))
    Donc apparement il vaut mieux utiliser parseLong(String) qui évite une instanciation de Long .
    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 :resolu:

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

  7. #7
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Merci pour les infos

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

Discussions similaires

  1. transformer un string en long
    Par c+cool dans le forum Langage
    Réponses: 5
    Dernier message: 08/11/2007, 16h44
  2. [Date] Comment transformer mon String en date avec newDate?
    Par Devil666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/06/2005, 16h50
  3. [XSLT] Transformer un String contenant du xml
    Par VinceFromBcn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 07/07/2004, 12h42
  4. Transformer un String en InputStream
    Par felix79 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/07/2004, 12h18
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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