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 :

Comment Incrémenter une chaine dans l'ordre alphabétique ?


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    gnome
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : El Salvador

    Informations professionnelles :
    Activité : gnome

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 71
    Points
    71
    Par défaut Comment Incrémenter une chaine dans l'ordre alphabétique ?
    Bonjour,

    Je souhaiterais savoir quelle est la méthode la plus élégante pour incrémenter, dans une boucle "for", une chaine de caractères dans l'ordre alphabétique ?

    A -> B -> C ... Z -> AA -> AB -> AC ... BA -> BB -> BC ...


    En gros c'est pour parcourir un tableau OpenOffice.

    merci
    bob

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Utilise le code ASCII :
    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 static void compteur()
    {		
    	int[] tab = new int[ 2 ];
    	for( int i = 0 ; i < tab.length ; ++i )
    	{
    		tab[ i ] = 'A' - 1;
    	}
    	tab[ 0 ] = 'A';
     
    	for( int i_colonne = 0 ; i_colonne < 60 ; ++i_colonne )
    	{
    		affiche( tab );
     
    		for( int i_tab = 0; i_tab < tab.length ; ++i_tab )
    		{
    			++tab[ i_tab ];
    			if( tab[ i_tab ] > 'Z' )
    			{
    				tab[ i_tab ] = 'A';
    			}
    			else
    			{
    				break;
    			}
    		}
    	}
    }
     
    public static void affiche( int[] tab )
    {
    	for( int i = tab.length - 1 ; i >= 0 ; --i )
    	{
    		if( tab[ i ] >= 'A' )
    		{
    			System.out.print( (char)tab[ i ] );
    		}
    	}
    	System.out.println();
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Je ne connais pas l'API OpenOffice, mais n'y a-t-il pas un moyen pour parcourir toutes les colonnes sans en connaitre le nom? (par exemple une fonction qui renvoi la liste des colonnes)

  4. #4
    Membre régulier
    Profil pro
    gnome
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : El Salvador

    Informations professionnelles :
    Activité : gnome

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 71
    Points
    71
    Par défaut
    pouaaaa !

    Y'a pas mieux ?

    A vrai dire, si, l'API OO permet de parcourir les colonnes avec un index, comme pour les lignes. Je l'ai vu après coup.

    Mais de toute façon je me suis souvent posé la question de savoir comment incrémenter des lettres et des String.

    merci en tout cas.

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 106
    Points
    106
    Par défaut
    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
     
     
    public class Test
    {
     
    	public static String alphabet= "abcdefghijklmnopqrstuvwxyz";
    	/**
             * @param args
             */
    	public static void main(String[] args)
    	{
    		for ( int i = 1; i <=1554 ; i++ )
    		{
    			System.out.println(getColumnName(i));
    		}
     
    	}
     
    	public static String getColumnName(int index)
    	{
    		if ( index<=0 )
    		{
    			return "";
    		}
    		if ( index<=26 )
    		{
    			return String.valueOf(alphabet.charAt(index-1));
    		}
     
    		int c = index / alphabet.length();
    		int r = index % alphabet.length(); 
     
    		if ( r==0 )
    		{
    			c=c-1;
    			r=alphabet.length();
    		}
     
    		return getColumnName(c) + getColumnName(r);
    	}
     
    }

    Un truc comme ca

    EDIT : Haaa il y a eu des réponses entre temps désolé
    Sébastien

Discussions similaires

  1. [VBA-EXcel] classement des noeuds d'une treeview dans l'ordre alphabétique
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/01/2017, 19h02
  2. Réponses: 5
    Dernier message: 26/08/2008, 16h00
  3. Réponses: 1
    Dernier message: 20/04/2007, 14h10
  4. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04
  5. Comment surligner une chaine dans un RichEdit
    Par esteban63 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2005, 00h33

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