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 :

Recherche par délimiteur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut Recherche par délimiteur
    Bonjour à tous.

    Je veux pouvoir, à l'intérieur d'un document texte, rechercher une ligne précise (qui commencerait par "ab" admettons) et charger tout les champs suivant sur cette ligne dans un tableau de String[]. Certains des champs comprendront des espaces, et le délimiteur que je souhaite utiliser est le "|". Je dois pouvoir aussi resélectionner cette ligne, et changer le contenu de tout les champs.

    J'ai lu dans la FAQ l'article portant sur le sujet (Lire avec délimiteurs dans un fichier) mais je ne comprend pas trop la structure, et ce n'est pas tout selon j'ai besoin.

    Merci à l'avance,

    PPGodOfLove

  2. #2
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Bonjour

    Voir la classe Scanner

    les classes Pattern et Matcher

    la méthode String.split("|")

    et finalement la classe StringTokenizer

    T'as du boulot

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut
    Merci beaucoup, je me met la dessus, et je vous en donne des nouvelles

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut
    Je suis bloqué sur le saut de ligne.

    En gros, lorsque le scanner.match() arrive au bout de la ligne, il ne change pas de ligne. Il me donne seulement comme message un NoSuchExpression, alors que cette expression arrive sur la 2e ligne. J'ai essayé de faire uen boucle avec un while qui faisait un findInLine tant que le sanner avait un enregistrement. Voici mon code, je ne trouve pas la clée pour faire vérifier les autres lignes.

    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
     
    String input = "mm-34-34-34-1-1-1-WaterBear-Lord Bisounours-PeachySkin-"+
    					"\n-mc-30-30-28-5-1-5-PeachySkin-WaterBear-Tazz-"+
    					"\n-md-28-28-28-1-1-1-Defender-WaterBear-Tazz";
    	String test = JOptionPane.showInputDialog(null, "entrez la recherche <a faire");
    Scanner s = new Scanner(input).useDelimiter("-");
     
    	do
    	{
    		while (s.hasNext())
    			s.findInLine(test);
     
    			if (s.hasNextLine())
    			{
    				s.nextLine();
    			}
    			else
    				System.out.println("Ça marche pas");
    	}
    	while(s.hasNext());
     
    	MatchResult result = s.match();
     
    	System.out.println(result);
    	s.close();
    Comment réussir mes plans ?

  5. #5
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Salut,

    Une boucle do-while n'est pas approprié dans ce cas ci. Préférer une boucle while(condition){bloc} la plus part du temps.

    la méthode Scanner.findInLine() est indépendante au délimiteur.

    je te propose de faire le test suivant, puis l'adapter à ton problème:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [...]
    int count = 0;
    	while(s.hasNext()) {
    		String token = s.next();
    		System.out.println(token);
    		if (token.indexOf(test) == 0)
    			count ++;
    	}				
    System.out.println("Nombre de chaines débutant par \""+ test + "\" : "+count);
    s.close();

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 14
    Par défaut
    Merci ça marche

    Me reste à voi si je peux aller le faire directement dans le fichier !

Discussions similaires

  1. Recherche par une partie du champ
    Par safadev dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/10/2005, 14h20
  2. recherche par mot clé
    Par seb59dk dans le forum Access
    Réponses: 3
    Dernier message: 06/09/2005, 14h26
  3. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56
  4. Probleme de recherche par listbox
    Par haigwepa dans le forum IHM
    Réponses: 6
    Dernier message: 12/10/2004, 19h57
  5. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07

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