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 :

Extraire une chaine des caractères après tonkenizer.


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Pérou

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Extraire une chaine des caractères après tonkenizer.
    Bonjour tout le monde,

    Je suis en train de développer un outil pour la vérification des paramétrés.
    J'ai déjà arrive a vérifier le fichier et de trier les mots que j'ai besoin. mon code est:

    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
    import java.io.*;
    import java.util.Scanner;
    import java.util.StringTokenizer;
     
    public class Readfile {
     
     
    	private static long taille;
     
    	public static void main(String[] args){
    		String fichier ="MyQuery.TQSQ";
    		String ligne = new String();
    		String text = new String();
    		try{
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			while ((ligne=br.readLine())!=null){
    				text = ligne;
    			}
    			br.close(); 
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}		
     
    		System.out.println(text);
     
    		taille = text.length();
    		System.out.println(taille);
     
    		StringTokenizer st = new StringTokenizer(text);
    		String token = "";
    		while (st.hasMoreTokens()) {
    			token = st.nextToken();
     
    			if (token.startsWith("Param"))
    				System.out.println(token);
    		}
    	}
    }
    et le résultat est:


    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
    <?xml version="1.0" encoding="UTF-8"?><SQLQuery AllowBuffering="false" AllowFuture="true" CacheDuration="0" CacheDurationUnits="M" Columns="" Comment="" Connector="" DateColumn="" DateFormat="MM/dd/yyyy HH:mm:ss" Debug="false" Description="" DocType="SQLQuery" Duration="60" DurationUnits="M" EndDate="" FilterExpr="" Group="" GroupingExpr="" ID="26" InlineTransform="" IntervalCount="1" IsCachable="false" JoinExpr="" Mask="" Method="" Mode="FixedQuery" NumberFormat="0.00" Param.1="ACT1" Param.10="" Param.11="" Param.12="" Param.13="" Param.14="" Param.15="" Param.16="" Param.17="" Param.18="" Param.19="" Param.2="ACT2" Param.20="" Param.21="" Param.22="" Param.23="" Param.24="" Param.25="" Param.26="" Param.27="" Param.28="" Param.29="" Param.3="" Param.30="" Param.31="" Param.32="" Param.4="" Param.5="" Param.6="" Param.7="" Param.8="" Param.9="" Password="" PathID="-1" Query="SELECT 
    	ACTIVITY.ACTIVITY,
    	ACTIVITY.DESCRIPTION,
     	ACTIVITY_LOG.ITEM_REVISION 
     
    FROM
    	 ACTIVITY,
    	 ACTIVITY_LOG
     
    WHERE 
    	 ACTIVITY.ACTIVITY = ACTIVITY_LOG.ACTIVITY  AND ACTIVITY.ACTIVITY ='[Param.2]'
     
    " QueryParams="" RowCount="100" SaveDate="03/06/2012 14:08:58" Schedule=""  Service="" SortExpr="" StartDate="" Tables="" Time="" TimePeriod="" Trace="false" UserName="" Version="12.1.7.50" XParamName.1="" XParamName.10="" XParamName.11="" XParamName.12="" XParamName.13="" XParamName.14="" XParamName.15="" XParamName.16="" XParamName.2="" XParamName.3="" XParamName.4="" XParamName.5="" XParamName.6="" XParamName.7="" XParamName.8="" XParamName.9="" XParamValue.1="" XParamValue.10="" XParamValue.11="" XParamValue.12="" XParamValue.13="" XParamValue.14="" XParamValue.15="" XParamValue.16="" XParamValue.2="" XParamValue.3="" XParamValue.4="" XParamValue.5="" XParamValue.6="" XParamValue.7="" XParamValue.8="" XParamValue.9=""/>
    2024
     
    Param.1="ACT1"
    Param.10=""
    Param.11=""
    Param.12=""
    Param.13=""
    Param.14=""
    Param.15=""
    Param.16=""
    Param.17=""
    Param.18=""
    Param.19=""
    Param.2="ACT2"
    Param.20=""
    Param.21=""
    Param.22=""
    Param.23=""
    Param.24=""
    Param.25=""
    Param.26=""
    Param.27=""
    Param.28=""
    Param.29=""
    Param.3=""
    Param.30=""
    Param.31=""
    Param.32=""
    Param.4=""
    Param.5=""
    Param.6=""
    Param.7=""
    Param.8=""
    Param.9=""
    Notamment dans le dernier bloc des paramétrés. Je voudrais vérifier si ils sont ou pas vides. Et si ils sont pas vides retourner son numéro.

    Je vous remercie en avance de tous les possibles idées et pistes.

    Tres cordialement

    Javier

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Param.12=""
    Si j'ai bien compris c'est token ou tu affiches les params et si c'est bien ce qu'il y a au dessus que tu veux controler voici mon idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String[] TabTemp = token.split("=")
     
    if(TabTemp[1].matches("\"\""){
       return "C'est vide :(";
     
    }
    else{
         return TabTemp[0];
         //ou pour juste le numéro
         return  TabTemp[0].split(".")[1];
    }

    Le principe je prend la partie droite de Param.12="", si je trouve l'expression régulière "", je considère que c'est vide, sinon c'est qu'il y a quelque chose alors je retourne la partie gauche, toute la partie ou juste la partie numéro.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Salut,

    bon en reflechissant vite fait, tu pourrais essayer d'utiliser les regex .
    genre comme ceci:
    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
     
    while (st.hasMoreTokens()) {
    			token = st.nextToken();
     
    			if (token.startsWith("Param"))
    				Pattern motif = Pattern.compile("[a-zA-Z].*"); // aprés sa dépend du regex !
     
     
    if(motif.matcher(token).matches()){
            return numero
           // --> ton action a réaliser
    else{
           //--> action 2 a réaliser
    }
    		}
    C'est une idée rapide comme ça. c'est a tester. voila
    en esperant ne pasavoir trop dit de conneries !

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Pour supprimer les Params vides, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     text = text.replaceAll("Param.[0-9\\.]+=\"\"", "");
    Après, ce sera surement plus simple de gérer ceux qui restent.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Pérou

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos propositions,

    J'ai arrivé à vérifier si les paramètres sont ou pas vides. c'est déjà une grande avance dans mon projet.

    XxArchangexX, ta proposition me semble la plus adapte à mon problème, j'ai fais quelque modification.

    je laisse le code complet pour le future.


    import java.io.*;
    import java.util.Scanner;
    import java.util.StringTokenizer;

    public class Readfile {


    private static long taille;

    public static void main(String[] args){
    String fichier ="MyQuery.TQSQ";
    String ligne = new String();
    String text = new String();
    try{
    InputStream ips=new FileInputStream(fichier);
    InputStreamReader ipsr=new InputStreamReader(ips);
    BufferedReader br=new BufferedReader(ipsr);
    while ((ligne=br.readLine())!=null){
    text = ligne;
    }
    br.close();
    }
    catch (Exception e){
    System.out.println(e.toString());
    }

    //System.out.println(text);

    //taille = text.length();
    //System.out.println(taille);

    StringTokenizer st = new StringTokenizer(text);
    String token = "";
    int nbLigne=0;
    int Total=0;
    while (st.hasMoreTokens()) {
    token = st.nextToken();

    if (token.startsWith("Param")){
    nbLigne++;
    String[] TabTemp = token.split("=");
    if(TabTemp[1].matches("\"\"")){
    }
    else{
    System.out.println("The parameter is not vide");
    System.out.println(token);
    }

    }
    }
    //System.out.println(nbLigne);
    }
    }

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

Discussions similaires

  1. extraire une chaine de caractères
    Par Stéph utilisateur d'acces dans le forum Excel
    Réponses: 6
    Dernier message: 06/03/2009, 14h15
  2. Extraire une chaine de caractères
    Par Sam_Dalembert dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/08/2008, 12h58
  3. extraire une chaine de caractères
    Par nopnop dans le forum C
    Réponses: 11
    Dernier message: 10/04/2007, 18h21
  4. Extraire une chaine de caractéres
    Par fatati dans le forum Oracle
    Réponses: 4
    Dernier message: 30/01/2007, 15h39
  5. Réponses: 4
    Dernier message: 12/03/2006, 21h47

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