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 Discussion :

Les chaînes de caractère en JAVA


Sujet :

Java

  1. #1
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut Les chaînes de caractère en JAVA
    Bonjour à tous,
    Je viens vous voir avec un petit problème,
    j'ai une chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String toto ="Bonjour à tous A!A!A!A!A";
    et je veux remplacer un seul caractère de ma chaîne avec un autre, disons remplacer un "A" par un "B", or quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     toto = toto.replace("A","B");
    il me remplace tous les "A" dans toto par des "B", chose que je ne veux pas, j'ai essayé d'extraire le dernier "A" de ma chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(toto.endsWith("A"); toto = toto.replace("A","B);
    mais bon ça ne marche toujours pas...
    Pouvez vous m'aider svp si vous avez une idée
    Merci encore

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    utilise replaceFirst() pour remplacer le premier.

  3. #3
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Merci tchize pour ta réponse rapide, mais si je veux remplacer le deuxième ou le dernier comment faire???? je peux récupérer le dernier avec un substring avec un indexOf de [length-1], mais comment faire pour remplacer que celui la et pas les autres qui sont avant lui...?

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Petit code que je viens de faire, c'est cadeau
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    class Main{
     
    	public static void main(String[] args) {
    		new Main();
     
     
    	}
     
    	public Main(){
    		String str = "Bonjour à tous A!A!A!A!A";
    		System.out.println(this.remplaceOccurence(str, 'A', 'B', 1));
    		System.out.println(this.remplaceOccurence(str, 'A', 'B', 2));
    		System.out.println(this.remplaceOccurence(str, 'A', 'B', 3));
    		System.out.println(this.remplaceOccurence(str, 'A', 'B', 4));
    		System.out.println(this.remplaceOccurence(str, 'A', 'B', 5));
    	}
     
    	/**
             * Remplace old par youg ou bout de la nième occurence
             * @param ChaineAModifier la chaine de caractere a modifier
             * @param old le caractere a modifier
             * @param young le caractere qui remplacera old
             * @param occurence ou il faut la remplcer
             * @return
             */
    	public String remplaceOccurence(String ChaineAModifier, char old, char young, int occurence){
    		String result = "";
    		int comptOccur = 0;
    		char charCourant;
    		for(int i =0;i<ChaineAModifier.length(); i++){
    			charCourant = ChaineAModifier.charAt(i);
    			if(charCourant==old){
    				comptOccur++;
    				if(comptOccur == occurence){
    					result+=young;
    				}else{
    					result+=ChaineAModifier.charAt(i);
    				}			
    			}else{
    				result+=ChaineAModifier.charAt(i);
    			}
    		}
     
     
    		return result;
    	}
    }
    Affichage :
    Bonjour à tous B!A!A!A!A
    Bonjour à tous A!B!A!A!A
    Bonjour à tous A!A!B!A!A
    Bonjour à tous A!A!A!B!A
    Bonjour à tous A!A!A!A!B

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme le dit le post ci dessus, pour tout opération non standard -> a la main

  6. #6
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Merci Ivelios c'est super sympa, si j'ai bien compris tu remplace la 1ere, 2eme occurence de "A" par "B" mais si j'ai une chaîne que je ne connais pas comment je peux faire, imaginons toto = "Merci Ivelios", et je veux remplacer le "s" par un "A", comment je peux faire, je peux remplacer les nombres par [length-1, 2, 3...]
    Car mes chaîne de caractères change en permanence sans les connaitre d'avance et moi je veux modifier que le dernier en fait.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si c'est toujours le dernier, quelque chose dans ce gout la devrait faire l'affaire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = chaine.subString(0,chaine.lastIndexOf(aChercher))+aRemplacer+chaine.subString(chain.lastIndexOf(aChercher)+aChercher.length());
    a ajuster peut etre par rapport aux zéro et surement par rapport aux limites de la chaines avec des ifs, etc :p

  8. #8
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Ou alors :

    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
    public Main(){
    		String str = "Merci Ivelios";
    		int Ocurrence = this.getOcurrence(str,'s');
    		System.out.println(this.remplaceOccurence(str, 's', 'B', Ocurrence));
     
    	}
     
    	/**
             * returne le nombre d'occurrence de c dans chaine
             */
    	private int getOcurrence(String chaine, char c) {
    		int nbOccurence = 0;
    		char charCourant;
    		for(int i =0;i<chaine.length(); i++){
    			charCourant = chaine.charAt(i);
    			if(charCourant==c){
    				nbOccurence++;
    			}
     
    		}
    		return nbOccurence;
    	}
    tu rajoute la methode getOcurrence qui te donne le nombre d'occurence d'un char dans un string


    ps :
    imaginons toto = "Merci Ivelios",
    C'est trop pour moi

  9. #9
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Merci Ivelios, Merci tchize, Merci à tous ... et bonne soirée

  10. #10
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 680
    Par défaut
    Ou plus simple via une expression rationelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto.replaceAll(".$","B")
    Va remplacer n'importe quel caractère(point) avant la fin(dollard) par B.

  11. #11
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Merci beaucoup Uther c'est super sympa, c'est vrai que ça falicite beaucoup les choses.
    Encore Merci à tous

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

Discussions similaires

  1. Java et les chaînes de caractères
    Par blackhock dans le forum Général Java
    Réponses: 15
    Dernier message: 20/04/2009, 14h26
  2. [MySQL] fonctions qui convertit les chaînes de caractères en entier
    Par poyoland dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 11h36
  3. MFC + Manipuler les chaînes de caractères
    Par mqsi dans le forum MFC
    Réponses: 2
    Dernier message: 15/11/2006, 16h24
  4. Réponses: 6
    Dernier message: 08/08/2006, 09h14

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