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 :

Chercher l’existence des caractères d'une chaine dans une autre chaine


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 72
    Par défaut Chercher l’existence des caractères d'une chaine dans une autre chaine
    bonsoir
    je veux chercher l'existence des caractères d'une chaine Ch1 dans une autre chaine ch2 , je veux savoir si tous les caractères de ch1 sont dans ch2, j'ai essai de développé le code suivant:
    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
     
    private static boolean recherche(String ch1, String ch2)
    {
     
     
    int j=0;
    for(int i=0;i<ch2.length();i++)
    {   
    	while((j<ch1.length())&& (ch2.charAt(j)==ch1.charAt(i)))
    	{j++;
    	System.out.println(ch1.charAt(i));
    	}
     
    }
     
    if (j>ch1.length())
        return true;
     
    	else 
    		return false;
     
     
    }
    mon problème lorsque j'ai testé le code avec ch1="jolie" et ch2="joliiiee" il me renvoi false , comment je peut résoudre le probléme ???
    merci d'avance pour vos aide

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 091
    Par défaut
    Comme vous désirez trouver uniquement l'existence des caractères de ch1 dans ch2, aucunes des méthodes de la classe String ne vous aidera. Vous devez donc coder cela vous-même.
    Personnellement, je ferai comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String ch1 = "jolie";
    String ch2 = "joliiiie";
    char[] caracteresCH1 = ch1.toCharArray();
    boolean verificateur;
    for (int i = 0 ; i < caracteresCH1.length ; i++) verificateur = ch2.indexOf(caracteresCH1[i]) >= 0;
    System.out.println("Chaine 1 : " + ch1);
    System.out.println("Chaine 2 : " + ch2);
    System.out.println("Résultat : " verificateur);
    A l'issue de la boucle, verificateur ne peut être vrai que si tous les caractères de ch1 peuvent être trouvés dans ch2, quel que soit leur emplacement.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yotta Voir le message
    Comme vous désirez trouver uniquement l'existence des caractères de ch1 dans ch2, aucunes des méthodes de la classe String ne vous aidera. Vous devez donc coder cela vous-même.
    Personnellement, je ferai comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String ch1 = "jolie";
    String ch2 = "joliiiie";
    char[] caracteresCH1 = ch1.toCharArray();
    boolean verificateur;
    for (int i = 0 ; i < caracteresCH1.length ; i++) verificateur = ch2.indexOf(caracteresCH1[i]) >= 0;
    System.out.println("Chaine 1 : " + ch1);
    System.out.println("Chaine 2 : " + ch2);
    System.out.println("Résultat : " verificateur);
    A l'issue de la boucle, verificateur ne peut être vrai que si tous les caractères de ch1 peuvent être trouvés dans ch2, quel que soit leur emplacement.
    Salut, non @yotta verificateur est vraie que si le dernier caractère de ch1 est dans ch2...

    Il faudrait écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean verificateur=caracteresCH1.length>0;
    for (int i = 0 ; i < caracteresCH1.length ; i++) verificateur &= ch2.indexOf(caracteresCH1[i]) >= 0;
    ou :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean verificateur=caracteresCH1.length>0;
    for (int i = 0 ; i < caracteresCH1.length ; i++) if (  ch2.indexOf(caracteresCH1[i]) < 0 ) { verificateur=false; break; };
    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
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut @imem.m,

    on t'a déjà répondu à ta question, posée dans un autre post, en suggérant distance de levenshtein ou soundex éventuellement.

    Soundex intégrant justement la problématique de répétition de caractères successif, mais étant plus adapté à la prononciation. Mais si tu tiens absolument à procéder comme ça, par recherche directe, je simpliefirais le problème (on peut faire un algo de comparaison de chaines tenant compte de la répétion, d'ailleurs en partant de soundex en utilisant une table d'équivalence plus stricte) en supprimant au préalable les répétions de caractères successifs et en utilisant l'égalité ensuite.

    Par exemple :

    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
    	public static void main(String[] args) {
     
    		String s="la joliiiee maison au bord du lac";
    		String s1="jolie";
    		int position = recherche(s,s1);
    		if ( position<0 ) {
    			System.out.println("pas trouvée");
    		}
    		else {
    			System.out.println("trouvée en position : "+position);
    		}
     
    	}
     
    	public static int recherche(String chaine, String chaineAChercher) {
    		if ( chaine==null || chaineAChercher==null ) throw new IllegalArgumentException();
    		for(int i=0; i<chaine.length();) {
    			if ( chaine.charAt(i)!=' ' ) {
    				int end=chaine.indexOf(' ',i);
    				if ( end<0 ) end = chaine.length();
    				if ( supprimerRepetition(chaine.substring(i,end)).equals(chaineAChercher) ) return i;
    				i=end;
    			}
    			else i++;
    		}
    		return -1;
    	}
     
    	private static String supprimerRepetition(String string) {
    		StringBuilder sb=new StringBuilder(); 
    		for(int i=0; i<string.length();i++) {
    			char c = string.charAt(i);
    			if ( i==0 || sb.charAt(sb.length()-1)!=c ) {
    				sb.append(c);
    			}
    		}
    		return sb.toString();
    	}
    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.

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 72
    Par défaut
    merci beaucoup ça marche

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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