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 :

ordrer les éléments d'un String


Sujet :

Langage Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut ordrer les éléments d'un String
    Hello,

    Je cherche une solution qui me permettrait de remplacé l'ordre des mots qui constitue un String.

    J'ai le String suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsp:page xmlns:bean="http://www.odcgroup.com/uif/bean/0.1" xmlns:jpath="http://apache.org/xsp/jpath/1.0" xmlns:scope="http://www.odcgroup.com/uif/scope/0.1" xmlns:udp="http://www.odcgroup.com/uif/udp/0.1" xmlns:xgui="http://www.odcgroup.com/uif/xgui/0.1" xmlns:xi="http://www.w3.org/2003/XInclude" xmlns:xsp="http://apache.org/xsp" language="java">
    que j aimerais remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	xmlns:xgui="http://www.odcgroup.com/uif/xgui/0.1" 	
    	xmlns:bean="http://www.odcgroup.com/uif/bean/0.1"		
    	xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
    	xmlns:udp="http://www.odcgroup.com/uif/udp/0.1" 	
    	xmlns:scope="http://www.odcgroup.com/uif/scope/0.1"  	
    	xmlns:jpath="http://apache.org/xsp/jpath/1.0" 			    
      xmlns:xi="http://www.w3.org/2003/XInclude" 	
      xmlns:xsp="http://apache.org/xsp" language="java">
    quelqu un aurait une idée d une solution élégante, en fait le nombre de namespaces est variable si qui importe c est que le namespace scope soit placé avant le namespace jpath

    d avance merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Pour un problème comme celui-là, je commencerais par couper ma chaîne selon les espaces, pour avoir une liste d'éléments à traiter au lieu d'une grande chaîne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] elements = ligne.split(" ")
    Ensuite, tu replaces ces éléments dans l'ordre souhaité en reconstruisant une chaîne... pour le détail de cette construction, je n'ai pas vraiment d'idée propre.

    Eventuellement un Comparator spécifique te permettant de définir une relation d'ordre sur tes éléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<String> listeTriee = Arrays.asList(elements);
    Collections.sort(listeTriee, tonComparatorSpecifique);
    StringBuilder sb = new StringBuilder();
    for(String str : listeTriee) {
       sb.append(str).append(" ");
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Une solution "élégante", ça je sais pas (j'en suis pas sûre ), mais c'est une solution qui devrait marcher.

    J'ai d'abord remplacé les " contenu dans ta String par ' pour qu'elle puisse être définie. Mais tu as la fonction :
    replace(char oldChar, char newChar)
    Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.
    Pour remettre ta chaîne en place.

    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
    String S = "<xsp:page xmlns:bean='http://www.odcgroup.com/uif/bean/0.1' xmlns:jpath='http://apache.org/xsp/jpath/1.0' xmlns:scope='http://www.odcgroup.com/uif/scope/0.1' xmlns:udp='http://www.odcgroup.com/uif/udp/0.1' xmlns:xgui='http://www.odcgroup.com/uif/xgui/0.1' xmlns:xi='http://www.w3.org/2003/XInclude' xmlns:xsp='http://apache.org/xsp' language='java'>";
    		String res, res1, res2, res3,res4 ;
     
    		int indexScope = S.indexOf("xmlns:scope") ; //Position de scope dans la chaîne
     
    		int indexJpath = S.indexOf("xmlns:jpath") ; //Position de jpath dans la chaîne
     
    		if(indexScope == -1 ||indexJpath == -1){//Cas où "scope" ou "jpath" n'est pas dans la chaîne
    			System.out.println("Erreur scope ou jpath inconnu");
    		}
    		else{
    			if(indexScope>indexJpath){//Cas où scope est après jpath
    				res1 = S.substring(0,indexJpath); //On récupère le début de la chaîne jusqu'au jpath
    				res2 = S.substring(indexJpath,indexScope);//On récupère le milieu de la chaîne de jpath jusqu'au scope
    				res3 = S.substring(indexScope, S.length()-16);//On récupère la fin de la chaîne sauf le langage Java à partie du scope
    				res4 = S.substring(S.length()-16, S.length()); //On récupère le langage Java car je pense que ce doit être la dernière partie de ta chaîne
     
    				res = res1+res3+res2+res4; //On recolle les morceaux dans l'ordre
     
    				System.out.println("res = "+res);
    			}
     
     
    		}
    Edit : La méthode de CyberChouan est sans doute plus élégante à toi de choisir

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    merci !

Discussions similaires

  1. [Débutant] Récupérer les éléments de List<string>[]
    Par blackhox dans le forum C#
    Réponses: 4
    Dernier message: 02/11/2013, 16h53
  2. Récupérer les éléments d'un String
    Par Invité dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/12/2012, 12h59
  3. [Débutant] supprimer les élément vide d'un vecteur de string ou de cell
    Par as2pik2b dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/03/2010, 22h16
  4. Réponses: 4
    Dernier message: 06/10/2009, 10h44
  5. Réponses: 2
    Dernier message: 11/08/2003, 09h43

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