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

Java ME Discussion :

Afficher une chaine de caractères dans un TextField


Sujet :

Java ME

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut Afficher une chaine de caractères dans un TextField
    Bonjour,
    J'ai une "longue" chaine caractère de type :
    ID_1:Titre_1:Type Valeur_1:Ecriture_1: Valeur_1
    ID_:Titre_2:Type Valeur_2:Ecriture_2: Valeur_2
    ID_3:Titre_3:Type Valeur_3:Ecriture_3: Valeur_3
    ...
    Je voudrais le parcourir et pouvoir l'afficher dans un objet de type TextField. Y'a-t-il une fonction basée sur les string qui permet de parcourir la chaine sur le ":" et pouvoir indexée à tout moment le numéro de ligne?
    Ma proposition mais cela marche pas pour parcourir la chaine :

    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
    16
    17
    18
    19
     
     	/** Reenvoie le nombre de ligne de la liste des appareils. */
    	private int len(String list) {
    		int i = 0;
    		int cmpt = 0;
    		int chmp = 0;
    		String tmp = "";
    		while (i < list.length()) {
    			if (chmp > 5 ) {
    				while (list.substring(i) != ":") {
    					tmp += list.substring(i);
    					i++;
    				} chmp++;
     
    			}cmpt++;
    			chmp = 0; //Réinitialise le chmp;
    		}
    		return cmpt;
    	}

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Je pense que la fonction Split() répond parfaitement à tes besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String pattern = "Salut:les:amis";
    String[] resultat = pattern.split(":");
     
    // Donne {"Salut", "les", "amis"}
    Tu n'as ensuite plus qu'a boucler sur ton tableau et reconstruire ta chaine.

    Mais d'où sort cette chaine ? Car si elle sort d'un fichier tu peux très bien lire ligne par ligne, ce qui est d'autant plus simple

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Salut,

    le problème, c'est qu'en JavaMe, il n'y a pas de split() (si je ne me trompe pas).

    Dans ce cas, il faut que tu implémentes toi-même la fonction.
    Un exemple sorti après 1 seconde de googlage (attention, je n'ai pas testé mais ça à l'air correct (mais je ne me prononce pas sur les perfs...)):

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public static String[] Split(String splitStr, String delimiter) {
         StringBuffer token = new StringBuffer();
         Vector tokens = new Vector();
         // split
         char[] chars = splitStr.toCharArray();
         for (int i=0; i < chars.length; i++) {
             if (delimiter.indexOf(chars[i]) != -1) {
                 // we bumbed into a delimiter
                 if (token.length() > 0) {
                     tokens.addElement(token.toString());
                     token.setLength(0);
                 }
             } else {
                 token.append(chars[i]);
             }
         }
         // don't forget the "tail"...
         if (token.length() > 0) {
             tokens.addElement(token.toString());
         }
         // convert the vector into an array
         String[] splitArray = new String[tokens.size()];
         for (int i=0; i < splitArray.length; i++) {
             splitArray[i] = (String)tokens.elementAt(i);
         }
         return splitArray;
     }
    Source

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Autant pour moi j'avais pas vu le JavaME

  5. #5
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    Merci Nico02 et Aniki,
    Effectivement, la fonction split() marche pas pour J2ME. Je vais tester pour la réponse de Aniki, je vous fais un retour le plutôt de ce que cela donne.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 23
    Par défaut
    Bonjour,
    Il marche bien, mais si je renseigne à la fonction comme argument la chaine suivante :
    0x001:volets roulants:B:W:0
    0x002:machine a laver:B:W:0
    0x003:lumiere ext:B:W:0
    0x004:thermostat:I:W:18
    0x005:thermometre:I:R:19

    Il itére que jusqu'à 21 alors que c'est 25 element que j'ai ici delimité par ':'.
    Je comprend pas.

    Il y a quelque chose qui va pas avec la fonction. Vous avez une idée ?

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Par défaut
    Citation Envoyé par syneta Voir le message
    Bonjour,
    Il marche bien, mais si je renseigne à la fonction comme argument la chaine suivante :
    0x001:volets roulants:B:W:0
    0x002:machine a laver:B:W:0
    0x003:lumiere ext:B:W:0
    0x004:thermostat:I:W:18
    0x005:thermometre:I:R:19

    Il itére que jusqu'à 21 alors que c'est 25 element que j'ai ici delimité par ':'.
    Je comprend pas.

    Il y a quelque chose qui va pas avec la fonction. Vous avez une idée ?
    Quels sont les 21 éléments que tu as dans ton tableau ?
    Ca sera utile pour comprendre ce qui ne marche pas.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/07/2008, 12h39
  2. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  3. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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