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 :

Séparer les lettres d'un String


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 32
    Points
    32
    Par défaut Séparer les lettres d'un String
    Bonjour,

    Dans la FAQ, (https://java.developpez.com/faq/java...ent-une-chaine),
    vous expliquez comment séparer les mot salut tout le monde avec java.util.StringTokenizer, mais moi je cherche à séparer les lettres
    et les insérer chacunes dans un tableau. Pensez-vous que l'on peut automatiser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String rep = CAT;
    char tabRep [3];
     
    tabRep [1] = C;
    tabRep [2] = A;
    tabRep [3] = T;

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Il existe une méthode pour récupérer un caractères a partir d'un String :

    String.charAt();
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    On peut obtenir directement les lettres d'une String sous forme de tableau de char :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String string = "exemple";
    char[] array = string.toCharArray();
    Aussi, il y a différentes manières de parcourir les caractères d'une chaîne pour travailler directement dessus (sans passer par une variable de type tableau) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0; i<string.length(); i++) {
        System.out.print(string.charAt(i));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(char c : string.toCharArray()) {
        System.out.print(c);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.chars().mapToObj(c -> (char)c).forEach(System.out::print);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(String c : string.split("")) {
        System.out.print(c);
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Merci de votre aide,

    J'ai choisi celle qui me paraissait le plus simple :
    Citation Envoyé par joel.drigo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String string = "exemple";
    char[] array = string.toCharArray();
    Et donc j'ai expérimenté et j'étais étonné des résultats.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package testPourPlusTard;
     
    public class TestPendu {
    	public static void main(String args []) {
     
    		String string = "mot";
    		char [] myArray = string.toCharArray();
     
    		for(int i = 0; i < 4; i++) {
    			System.out.println(myArray [i]);
    		}
    	}
     
    }
    En plus des trois lettres découpées m-o-t auxquelles on pouvait s'attendre, dans l'execution j'ai recu :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    at testPourPlusTard/testPourPlusTard.TestPendu.main(TestPendu.java:10)
    C'est un petit détail mais bon...

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sticonik Voir le message
    En plus des trois lettres découpées m-o-t auxquelles on pouvait s'attendre, dans l'execution j'ai recu :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    at testPourPlusTard/testPourPlusTard.TestPendu.main(TestPendu.java:10)
    C'est un petit détail mais bon...
    Et bien, c'est tout à fait normal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i = 0; i < 4; i++) {
    			System.out.println(myArray [i]);
    		}
    Ton programme se déroule ainsi :

    1. i prend la valeur 0, qui est bien inférieur à 4, donc on affiche myArray[i], donc myArray[0], donc m
    2. i prend la valeur 1, qui est bien inférieur à 4, donc on affiche myArray[1], donc o
    3. i prend la valeur 2, qui est bien inférieur à 4, donc on affiche myArray[2], donc t
    4. i prend la valeur 3, qui est bien inférieur à 4, donc on affiche myArray[3], et, là, ça plante, parce que la taille du tableau est 3, forcément, puisqu'il y avait que 3 lettres dans "mot". et c'est exactement ce que tu dis l'erreur qui s'affiche :
      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
      at testPourPlusTard/testPourPlusTard.TestPendu.main(TestPendu.java:10)
      3 est un index hors limites pour une longueur de 3, en français.


    D'ailleurs, dans ton code cas, à part pour l'affichage, dans ton programme ça ne pose pas de souci, mais s'il devait faire des choses après, ça en poserait un de taille : parce que le programme s'arrête sur cette exception, donc tout le code qui pourrait se trouver après ne sera pas exécuté.

    Pour éviter ce genre de problème, il est toujours préférable d'écrire la boucle à partir de la taille du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String string = "mot";
    char [] myArray = string.toCharArray();
     
    for(int i = 0; i < myArray.length ; i++) {
        System.out.println(myArray [i]);
    }
    Ainsi, tu peux changer la valeur de "mot" comme tu veux, sans avoir à modifier le reste du code, ça fonctionnera toujours sans erreur (enfin, sauf si tu fais String string = null;, mais, ça, c'est une autre histoire).

    Citation Envoyé par Sticonik Voir le message
    J'ai choisi celle qui me paraissait le plus simple :
    C'est normal qu'en débutant tu choisisses les solutions qui te paraissent les plus simples. Et c'est forcément un choix subjectif. Tu verras ensuite que parfois la solution d'apparence la plus simple n'est pas forcément celle la plus simple effectivement, en terme de lisibilité, d'évolutivité et de maintenabilité, ou ça peut dépendre aussi de ce qu'on cherche à faire (le traitement à faire sur chaque caractère dans ton cas), et, surtout, que ce n'est pas forcément la solution préférable, en terme de performances (occupation mémoire et temps d'exécution).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Merci beaucoup, ça m'a beaucoup aidé! :)

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/06/2017, 10h24
  2. Difficulté à extraire les lettres d'un string
    Par benoit256255 dans le forum Langage
    Réponses: 1
    Dernier message: 05/11/2016, 23h00
  3. [LibreOffice][Tableur] Récup les lettres du contenu string d'une cellule
    Par francky74 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 10/01/2014, 08h46
  4. Recuper les premieres lettres d'une string
    Par Ya7yaKech dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/03/2009, 18h35
  5. [RegEx] Séparer les chiffes d'une string
    Par Alvaten dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2008, 12h07

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