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 :

isoler chaine de caractère


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut isoler chaine de caractère
    bonjour,

    J'ai une chaine de caractères sous cette forme : FFFFFFFFFCFF1234FFFFFFFF
    Cette chaine représente un suite de nombres hexadécimaux codés sur 8 bits (1 nombre = 2 lettres) et comprend au maximum 32 caractères.
    => la chaine représente les nombres : FF FF FF FF FC FF 12 34 FF FF FF FF

    je voudrai :
    1- supprimer toutes les valeurs FF qui sont en début et fin de chaine
    => donc je dois récupérer : FCFF1234
    2- récupérer la position de début de cette sous-chaine (le numéro de caractère)
    => dans ce cas la valeur serait : 8
    3- récupérer la taille de la sous chaine
    => dans ce cas la valeur serait : 8

    => comment faire cela le plus rapidement possible (dans mon programme, je fais cela beaucoup de fois) ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    salut,

    comment faire cela le plus rapidement possible (dans mon programme, je fais cela beaucoup de fois) ?
    A la mano ?
    Un truc dans ce style ?

    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
    48
    49
     
    	public static String getSubCaracs(String inputString) {
     
    		// Le premier caractère non 'FF' (ie. début des data). 
    		// Toujours un multiple de 2.
    		int firstNb = 0; 
     
    		// La longueur des data (toujours un multiple de 2).
    		int lengthNb = 0;
     
    		// le curseur pour nos iterations.
    		int posNb = 0;
     
    		// on parcourt d'abord de gauche a droite
    		// pour trouver le début des data.
    		while (posNb < inputString.length()) {
    			if (inputString.charAt(posNb) != 'F' || inputString.charAt(posNb+1) != 'F') {
    				break;
    			}
    			posNb+=2;
    		}
     
    		// début de data trouvé.
    		if (posNb< inputString.length()) {
    			firstNb = posNb;
     
    			// on parcout maintenant de droite à gauche
    			//  pour trouver la fin de chaîne.
    			posNb = inputString.length() - 2;
    			while (posNb >0) {
    				if (inputString.charAt(posNb) != 'F' || inputString.charAt(posNb+1) != 'F') {
    					// fin de chaine trouvé
    					break;
    				}
    				posNb-=2;
    			}
     
    			posNb+=2;
    			lengthNb = posNb - firstNb;
     
    			System.out.println("found: beginning="+firstNb+" ; length="+lengthNb);
    			return inputString.substring(firstNb, posNb);
    		}
    		// que des 'FF' trouvés. on renvoie "".
    		else {
    			System.out.println("no data found.");
    			return "";
    		}
    	}
    Après, tu peux étoffer en ajoutant des tests supplémentaires:
    - cohérence avec la taille maximale que tu veux accepter (32 caractères)
    - string dont le nombre de caractères est forcément un multiple de 2
    - ...

    EDIT: avec quelques tests unitaires, ça semble cohérent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static void main(String[] args) {
    		System.out.println("found: '"+getSubCaracs("FFFFFFFFFCFF1234FFFFFFFF")+"'");
    		System.out.println("----------------------------------------");
    		System.out.println("found: '"+getSubCaracs("FFFFFFFFFCFF1234")+"'");
    		System.out.println("----------------------------------------");
    		System.out.println("found: '"+getSubCaracs("FFFFFFFF")+"'");
    		System.out.println("----------------------------------------");
    		System.out.println("found: '"+getSubCaracs("FCFF1234FFFFFFFF")+"'");
    		System.out.println("----------------------------------------");
    	}
    ... renvoie:

    found: beginning=8 ; length=8
    found: 'FCFF1234'
    ----------------------------------------
    found: beginning=8 ; length=8
    found: 'FCFF1234'
    ----------------------------------------
    no data found.
    found: ''
    ----------------------------------------
    found: beginning=0 ; length=8
    found: 'FCFF1234'
    ----------------------------------------

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    ok merci beaucoup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [VBS] Isolement d'une chaine de caractères
    Par parker13 dans le forum VBScript
    Réponses: 2
    Dernier message: 27/07/2006, 09h42
  3. Réponses: 3
    Dernier message: 21/06/2005, 16h18
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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