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 :

retourne position d'une chaine de caractère


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut retourne position d'une chaine de caractère
    Bonjour,

    J'aimerai savoir s'il existe une méthode qui retourne la position d'une chaine de caractère en fonction d'un autre caractère ?

    Je m'explique :

    j'ai par exemple un String :

    String str = " set x = $toto + 8 ";

    j'aimerai connaître la position de $toto s'il est avant 8 ou après 8
    un boolean qui me renvoi 1 si $toto est avant 8 ou 0 si $toto est après 8


    merci

  2. #2
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour khalous91

    Je ne pense que cela existe. et même si cela existait, je vois pas comment elle pourrais fonctionner

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    Citation Envoyé par bpy1401 Voir le message
    Bonjour khalous91

    Je ne pense que cela existe. et même si cela existait, je vois pas comment elle pourrais fonctionner

    Cordialement
    D'accord
    donc je dois faire une petite fonction qui traite ceci :

    j'ai fais ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String str = "set c =  9 + $toto";
    		char c = '$';
    		if ( c < 1 ){
    			System.out.println(" c'est avant ");
    		}else {
    			System.out.println("c'est apres" );
    		}
    je pensai que ça aller être bon mais erreur, je suis vraiment bloquer avec la condition

  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
    Mais, tu as déjà posé cette question, et j'y ai déjà répondu ici


    Par contre, ça
    Citation Envoyé par khalous91 Voir le message
    un boolean qui me renvoi 1 si $toto est avant 8 ou 0 si $toto est après 8
    c'est absurde : un boolean vaut true ou false, donc ça risque pas de valoir 0 ou 1.
    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é
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Mais, tu as déjà posé cette question, et j'y ai déjà répondu ici


    Par contre, ça

    c'est absurde : un boolean vaut true ou false, donc ça risque pas de valoir 0 ou 1.
    Effectivement !!
    je n'y ai pas penser
    je viens de tester avec ton code et effectivement tu me l'avais donner

    merci

  6. #6
    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
    Et ça, ressemble fortement à la solution que je t'ai donnée, mais tellement bidouillée que ça ne veut plus rien dire:
    Citation Envoyé par khalous91 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String str = "set c =  9 + $toto";
    		char c = '$';
    		if ( c < 1 ){
    			System.out.println(" c'est avant ");
    		}else {
    			System.out.println("c'est apres" );
    		}
    c est un char : les char inférieur à 1, c'est \0 et c'est tout. Tous les autres sauf ascii 01 sont supérieur !

    Ce sont les positions que tu dois comparer. Mais si si la position du $ est déterminable (str.indexOf("$")) la position de tout le reste est difficilement déterminable par un indexOf, puis que ce n'est pas une chaîne fixe.

    Dans le cas particulier ou tu es sûr que tes expressions sont sous la forme bloc1 bloc2 bloc3, ou

    • bloc1 est toujours quelquechose suivi de "="
    • bloc2 est $ suivi de lettres
    • bloc3 est l'expression à positionner par rapport à bloc2
    • ou bloc2 et bloc3 sont inversés


    Alors tu peux utiliser une simplification du code :

    1. tu te débarrse toujours de bloc1 (de la même façon qu'indiquée dans mon exemple)
    2. tu prend la position du $ dans ce qui reste
    3. si cette position est 0, alors $xxxx est avant tout le reste
    4. sinon, si qu'il est après


    Mais "set c = 1 + $toto + 2" ne fonctionnera pas avec cette simplification. Pas plus que "set c = $toto + $toto", et d'autres dans le même genre.

    Par contre, mon code fonctionne aussi dans le cas particulier, qui est détectable. Il faut bien sûr l'adapter pour qu'au lieu d'afficher des avants, des après, etc... on récupère juste les index de chaque bloc (ce qu'on peut faire avec Pattern/Matcher (même sans en fait) comme on te l'a déjà indiqué dans d'autres posts), et ainsi tu peux récupérer une liste d'index/mot. Si cette liste d'index ne contient que 2 éléments, alors tu te trouves dans ton cas simplifié, et déterminer si l'un est avant l'autre n'est affaire que de comparaisons de base.
    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.

  7. #7
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par défaut
    la classe String possède une méthode indexOf(String) qui donne la position dans la chaine d'une sous-chaine telle que "toto"
    donc tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = maChaine.indexOf("toto");
    b=maChaine.indexOf("8");
    et en fonction du signe de a-b tu connais qui est le premier .
    Développeur Java
    Site Web

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    oui c'est ce que j'ai utiliser :

    exemple code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String str = "set c =   $toto + 9  ";
     
    		char c = '$';
    		char i = '9';
     
     
    		if (str.indexOf(c) > str.indexOf(i) ){
    			System.out.println(" $toto est après  ");
    		}else {
    			System.out.println("$toto est avant " );
    		}
    par contre point de vue générique c'est pas trés top, le code de Joel Drigo est plus générique et du coup plus utile dans d'autres cas extreme

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 180
    Par défaut
    Salut

    j'aurai aussi une petite question :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class Test {
     
    	public static void main(String[] args) {
     
    		String str = "$ojjhg + oep +  $toto";
    		String str1 = " ";
    		String tata = "$tyty + 5";
    		String huhu = "6 - $iuou";
     
    		String valeurCherchee ="$toto";
    		String valeurRef ="oep";
     
    		String[] split = str.split(" ");
     
    		if ( split.length>0 ) { 
    		   final int fin = split.length-1;
    		   for(int index=0; index<split.length;index++){
    		     String varname = split[index];
    		     if ( varname.startsWith("$") ) {
    		         if(index==0) {
    		             System.out.println(varname +" au début");
    		        }
    		        else if (index==fin) {
    		             System.out.println(varname +" à la fin");
    			}
    			else {
    		             System.out.println(varname +" entre " + split[index-1] + " et " + split[index+1]);
    		        }
    		    }
    		}
     
     
    	}else{
    		System.out.println("Il n'y a rien ");
    	}
     
    }
    	}
    Si je met deux String en attribut :
    String valeurCherchee ="$toto";
    String valeurRef ="oep";

    et que j'aimerai dans cette chaine de caractère : String str = "$ojjhg + oep + $toto";
    trouver $toto en fonction de oep ; c'est a dire valeurCherchee en fonction de valeurRef, sans pour autant me dire ce qu'il y a avant juste la position de valeurCherchee par rapport a ma valeurRef

    Avez vous une idée s'il vous plait ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/07/2015, 20h00
  2. [Débutant] Trouver la position d'une chaine de caractère dans un fichier .txt
    Par martineaston dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/06/2013, 14h14
  3. Longueur retourner pour une chaine de caractére
    Par locs dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 10/09/2007, 15h19
  4. Retourner une chaine de caractére
    Par insa59 dans le forum C
    Réponses: 22
    Dernier message: 23/03/2007, 17h29
  5. Réponses: 23
    Dernier message: 13/11/2006, 03h33

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