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 :

[Débutant] Caractères et espaces blancs


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut [Débutant] Caractères et espaces blancs
    Bonjour,

    je suis bloquée dans mon programme à cause d'une chose qui doit être toute simple...

    En effet, j'aimerais, dans ma lecture de fichier (que je lis caractère par caractère c'est très important), comparer ce caractère avec un espace "blanc" (espace simple entre deux mots), et dire si c'est bien un caractère blan ou non. Si c'en est un je l'écris dans un deuxième fichier, sinon je passe au caractère suivant. J'aimerais aussi pouvoir comparer ce caractère à carriage return et s'il est égal à celui-ci, l'écrire en le remplacant par un caractère blanc.

    Le problème vient du fait que, si j'écris ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char c;
    if (c =='/s') {
    // mon code ;
    }
    il me donne cela comme erreur :
    unclosed character literal
    et si je redouble le / il me donne :

    not a statement
    Pourquoi?

    J'ai aussi pensé à utiliser la méthode isWhitespace, malheureusement elle tient aussi compte des tabulations ce qui ne m'interesse pas du tout.

    Comment puis-je procèder?

    Merci d'avancepour vos réponses..

  2. #2
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Peut être que cet article de la FAQ t'aidera Doublage/quadruplage d'antislash
    "Le calendrier, c'est la bureaucratie du temps." Quino

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Et pourquoi tu ne fais pas tout simplement :

    // caractère blanc :
    if (c == ' ') ...

    // caractère tabulation :
    if (c == '\t') ...

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est des \ qu'il faut utiliser, pas des /.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    okay cela compile mais à l'exécution ca ne donne rien...

    Je voudrais remplacer chaque espace, par un retours charriot mais quand je fais ceci :

    \

    rien ne se passe

  6. #6
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Si tu veux remplacer tous tes blancs par un retour chariot, essaie ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String s ="Voici le forum de developpez.com";
    s = s.replaceAll("\\s", "\r");
    System.out.println(s);
    "Le calendrier, c'est la bureaucratie du temps." Quino

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Oui mais là c'est un seul caractère... Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ((Character.isWhitespace(c))
               {
                     String cString = new String();
                      cString = Character.toString(c);
                      cString = cString.replace(c,'\r');
                      c = cString.charAt(0);
                      file.write(c);
                 }
    Et là rien ne se passe je ne comprends vraiment pas...

  8. #8
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Je ne comprends vraiment pas ton souci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char c = ' ';
    if (Character.isWhitespace(c))
    {
    	c = '\r';
    	System.out.println("alors"+c+"toto");
    }
    Cela affiche dans la console.

    Donc ton espace est bien remplacé par un retour chariot

    Le souci doit venir de ton écriture dans ton fichier.
    "Le calendrier, c'est la bureaucratie du temps." Quino

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup cela fonctionne maintenant (désolée pour le retard!)

    Un dernier problème se pose à moi (après j'arrête de vous embêter avec des petits détails lol).

    Je voudrais rechercher le pattern '+' (pas uniquement +, je voudrais : guillemet plus guillemet).

    J'utilise la méthode indexOf, qui prend un string en argument, mais voila je n'arrive pas a ecrire correctement mon pattern, et il me donne une erreur.

    Voici ce que j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i;
    if ((i = maString.indexOf("'+'")) != -1)
    { 
    // mon code
    }
    j'ai aussi essayé avec : mais ca ne fonctionne toujours pas...

    Pour info, l'erreur c'est : cannotfind symbol...

    Voila merci beaucoup...

  10. #10
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Je ne comprends toujours pas où tu veux en venir mais bref.

    Je ne vois pas aussi ce qui te bloque dans ton code puisqu'il fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String maString ="abc1'+'2";
    int i=0;
    if ((i = maString.indexOf("'+'")) != -1)
    { 
        System.out.println("index début de mon pattern : " + i);
    }
    Avec ton code, tu récupères l'index de début de ta chaîne '+'. Ici, dans mon exemple, i vaut donc 4.
    "Le calendrier, c'est la bureaucratie du temps." Quino

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Cela fonctionne merci...

    Voila j'ai toujours un gros soucis : j'ai un fichier que je dois lire et recopier dans un deuxieme fichier. Seulement voila, les espaces blancs entre les mots du premiers fichiers doivent disparaitre car les mots doivent etre recopiés l'un à la suite de l'autre style :

    abc blabla sup rev // 1er fichier

    devient :
    abs
    blabla
    sup
    rev

    dans le deuxieme...

    Seulement voila, il y a des tabulations, des espaces insécables, etc. dans mon premier fichier et lorsque je pose :

    if (c == ' ')
    myFile.write('\r');


    Je me retrouve avec souvent d'enormes espaces entre chaque mot, ce qui me fait penser que je prendrais peut-etre bien les tabulations en agissant ainsi...

    Que pourrais-je faire pour ne tenir compte QUE des espaces entre les mots?

    Merci d'avance

  12. #12
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    humm ... apparamment, il te faut toujours faire deux posts pour qu'on comprenne ton problème ...
    Tu veux dire que si on a 4 espaces par exemples entre deux mots, tu veux qu'on ecrit 1 seul \r dans le fichier et pas un pour chaque espace ?
    Si c'est ça, alors il vaut mieux laisser tomber ton approche actuelle (caratère par caractère) et adopter la solution donné plus haut (String.replaceAll) avec un petit changement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.replaceAll("\\b\\s+\\b", "\r");
    Bonne chance.

Discussions similaires

  1. Espace blanc sous un conteneur dans Safari 2.0
    Par cyberderf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/01/2006, 00h54
  2. [XSLT] Caractères spéciaux (espace)
    Par yuri dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/12/2005, 16h18
  3. Remplacer espace blanc...
    Par tochbee dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2005, 23h35
  4. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44
  5. Réponses: 4
    Dernier message: 04/03/2003, 01h05

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