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 :

lire une chaîne de caractere definit dans plusieurs lignes


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut lire une chaîne de caractere definit dans plusieurs lignes
    Bonjour,

    Je suis vraiment un débutant en programmation.

    j'ai une chaine de caractère en separant avec plusieurs lignes

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string notes = 
    'je mange du chocolat 
    les enfants sont a l'ecole
    tout le monde travaille dure
    il faut faire les courses';

    comment je vais faire parcourir dans Java pour lire chaque caractere dans la chaine dans un boucle? de descendre au prochain ligne? et la lecture sera fini quand on arrive au dernier caractère du mot ''courses''

    J'arrive juste à lire la première ligne mais pour continuer le precedent au a la prochaine ligne on fait comment?

    C'est quoi la longeur de la chaine au complet sans compter le '\n' et les restes de chaque ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string lire; 
    longueurnotes = notes.length();
    for (int i =0; i <= longueurnotes, i++)  { 
    //Et comment je traite la ligne par ligne ici ...
     
    lire = notes.charAt(i);
    System.out.print(lire);
    }
    Merci
    Serge

  2. #2
    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,

    Citation Envoyé par srambo Voir le message
    j'ai une chaine de caractère en separant avec plusieurs lignes

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string notes = 
    'je mange du chocolat 
    les enfants sont a l'ecole
    tout le monde travaille dure
    il faut faire les courses';

    D'abord, en Java, langage sensible à la casse, les majuscules et les minuscules ont leur importance. C'est la classe String, pas string.
    Ensuite, une String dite littérale (la valeur si tu préfères) doit être entre double-quotes, pas simple quote qui est pour les char (caractère seul).
    Enfin, on ne peut (pas encore) faire des chaînes sur plusieurs lignes comme ça. On appelle ça les blocs de text (text blocks). On en a parlé pour Java 13 (c'est dedans en expérimental). Peut-être en Java 14, mais ce n'est pas vraiment sûr (pas confirmé en tout cas). Espérons qu'en Java 15... en attendant, il faut soit définir la chaîne sur une ligne, avec des \n pour passer à la ligne, soit la découper en morceau et réassembler par concaténation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String notes = 
    "je mange du chocolat\n"+ 
    "les enfants sont a l'ecole\n"+
    "tout le monde travaille dure\n"+
    "il faut faire les courses";
    On peut faire aussi, pour éviter les + :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	String notes = String.join("\n", // un caractère qui sépare les lignes
    			"je mange du chocolat", 
    			"les enfants sont a l'ecole",
    			"tout le monde travaille dure",
    			"il faut faire les courses");
    Citation Envoyé par srambo Voir le message

    comment je vais faire parcourir dans Java pour lire chaque caractere dans la chaine dans un boucle?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0; i<notes.length(); i++) {
        char c = notes.charAt(i);
    }
    ou encore, si on n'a pas besoin de la position i de chaque caractère dans la chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(char c : notes.toCharArray()) {
     
    }
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    notes.chars().forEach(ic-> {
    	char c = (char)ic;
    });
    Mais attention, on aura les "\n" dans les différents caractères obtenus.

    On peut les filtrer (avec un test) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(int i=0; i<notes.length(); i++) {
        char c = notes.charAt(i);
        if ( c!='\n' ) {
               // ... tous les caractères sauf \n
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    notes.chars().filter(ic-> ic!='\n').forEach(ic-> {
    			char c = (char)ic;
    });
    On peut aussi utiliser un tableau de chaînes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String[] notes = {
    			"je mange du chocolat", 
    			"les enfants sont a l'ecole",
    			"tout le monde travaille dure",
    			"il faut faire les courses"};
    Ceci permet de garder la notion de ligne, mais sans avoir de \n.
    Pour afficher chaque ligne à ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(String line : notes) {
    System.out.println(line);
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.stream(notes).forEach(System.out::println);
    Et pour le parcours dans un for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(String line : notes) {
       for(int i=0; i<line.length(); i++) {
           char c = line.charAt(i);
       }
    }
    Pour avoir la taille totale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int longueurTotale = Arrays.stream(notes).mapToInt(String::length).sum();

    Citation Envoyé par srambo Voir le message
    J'arrive juste à lire la première ligne mais pour continuer le precedent au a la prochaine ligne on fait comment?
    C'est étrange ce que tu dis. Pas avec le code que tu montres, qui ne compile pas. Tu es sûr qu'on parle bien de Java.
    En JavaScript, ECMA6, on peut faire des blocs de texte, il me semble, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    notes = `je mange du chocolat 
    les enfants sont a l'ecole
    tout le monde travaille dure
    il faut faire les courses`;
    mais pas de string devant.


    Pour en revenir au blocs de texte, justement, en Java, on peut les essayer en activant l'option --enable-preview du compilateur.

    Du coup on peut faire (attention, il n'y a aucune garantie que la syntaxe ne va pas changer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	String notes = """
    	je mange du chocolat 
    	les enfants sont a l'ecole
    	tout le monde travaille dure
    	il faut faire les courses
    	""";
    On obtient exactement la même chose que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String notes = String.join("\n", // un caractère qui sépare les lignes
    			"je mange du chocolat", 
    			"les enfants sont a l'ecole",
    			"tout le monde travaille dure",
    			"il faut faire les courses");
    Dans les deux cas, on peut retrouver chaque ligne en utilisant un split par \n qui va découper la chaîne et va donner un tableau de chaînes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(String line : notes.split("\n")) {
         for(char c : line.toCharArray()) {
         }
    }
    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.

Discussions similaires

  1. [XL-2007] VBA: lire une chaine de caractere dans une boucle
    Par kimou75 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/03/2016, 23h17
  2. Lire une chaîne dans un fichier UTF-8
    Par karimoscapitated dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 17/03/2016, 18h01
  3. Comment faire pour supprimer dans une chaîne de caractere
    Par Thierry69CH dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/07/2010, 20h23
  4. Comment lire une chaîne dans un fichier binaire?
    Par dot-_-net dans le forum Débuter
    Réponses: 9
    Dernier message: 18/05/2008, 23h13
  5. Lire une chaîne de caractères dans le corps de page
    Par bronon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/11/2007, 10h11

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