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 :

[String]Problème sur une fonction de récurrence


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut [String]Problème sur une fonction de récurrence
    Bonjour,
    Je veux bien créer une fonction qui coupe toutes les espaces avant et après un String, voici mon code:

    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
    public class TextProcess {
    public static String RemoveSpace(String text){
    	return RemoveSpaceAfter(RemoveSpaceBefore(text));
    }
    
    public static String RemoveSpaceAfter(String text){
    	while(text.endsWith(" ")){
    		 return RemoveSpaceAfter(text.substring(0, text.length()-2));
    	}
    	return text;
    }
    
    public static String RemoveSpaceBefore(String text){
    	if(text.startsWith(" ")){
    		 return RemoveSpaceBefore(text.substring(1, text.length()-1));
    	}
    	return text;
    }	
    }
    Le résultat est faux,, il me faut donc changer le code en:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static String RemoveSpaceAfter(String text){
    	while(text.endsWith(" ")){
    		 return RemoveSpaceAfter(text.substring(0, text.length()-1));
    	}
    	return text;
    }
    C'est très bizarre parce que text.substring(0, text.length()-1) c'est exactement text

  2. #2
    Membre du Club Avatar de emiscool
    Profil pro
    architecte logiciel
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : architecte logiciel

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 51
    Points
    51
    Par défaut
    l'objet String est considirer comme un tableau de caractères, la premier case c est l'index 0 est la dernier case c est l'index (STR.lenth-1)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    ne marche pas ?

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par emiscool Voir le message
    l'objet String est considirer comme un tableau de caractères, la premier case c est l'index 0 est la dernier case c est l'index (STR.lenth-1)

    Donc pourquoi ce code donne "test"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.print("test".substring(0, "test".length()));
    Normalement ça doit être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.print("test".substring(0, "test".length()-1));

  5. #5
    Membre du Club Avatar de emiscool
    Profil pro
    architecte logiciel
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : architecte logiciel

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 51
    Points
    51
    Par défaut
    la fonction trim marche bien , mais cet juste pour supprimer les espaces a la fin de la chaine s de caractères

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par emiscool Voir le message
    la fonction trim marche bien , mais cet juste pour supprimer les espaces a la fin de la chaine s de caractères
    Si ça marche,
    J'ai réinventé l'eau chaude alors
    Mais quelqu'un peut répondre à mes questions avant pour comprendre l'objet String? Merci

  7. #7
    Membre du Club Avatar de emiscool
    Profil pro
    architecte logiciel
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : architecte logiciel

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Points : 51
    Points
    51
    Par défaut
    merci de voire ce lien pour plus de détails:

    javadoc

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Points : 533
    Points
    533
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String test="nouveau test";
    c'est une chaine à 12 caractères

    retourne nouveau, substring renvoie la chaine allant de début à fin-1 (substring(début, fin))
    http://java.sun.com/j2se/1.5.0/docs/...ring(int, int)
    nouveau est une chaine de 7 caractères donc si je veux enlever le dernier caractère de nouveau le 'u' j'aurais substring(0,6) soit le length-1 et pas -2
    la c'est logique.

    C'est très bizarre parce que text.substring(1, text.length()-1) c'est exactement text
    pour ca c'est pas possible je dirais que tu dois avoir deux espaces dans ton string de départ un au début et un à la fin donc avec ton substring tu vire le premier et le dernier caractère.

    edit ah ben on a répondu avant moi ^^ (c'est un problème de lecture d'index c'est tout)

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Points : 533
    Points
    533
    Par défaut
    Citation Envoyé par hibou107 Voir le message
    Donc pourquoi ce code donne "test"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.print("test".substring(0, "test".length()));
    test 4 caractères substring(0,4) de 0 à 4 ca fait 5 caractère , substring soustrait comme dit au dessus et te renvoie la chaine de 0 à 3 se qui donne bien test

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut
    OK, j'ai tout compris!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2014, 22h52
  2. Problème sur une fonction logique
    Par Crack1986 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/03/2012, 16h51
  3. problème sur une Fonction récursive
    Par bernie74 dans le forum Développement
    Réponses: 4
    Dernier message: 21/11/2011, 12h45
  4. probléme sur une fonction
    Par titeufdev dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/01/2011, 09h36
  5. [PostgreSQL] [PostGreSQL] problème sur une fonction avec connexion
    Par roblescriso dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2008, 18h03

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