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 :

utlisation de la méthode String.split pour enlever des espace / Regex expression


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 10
    Points
    10
    Par défaut utlisation de la méthode String.split pour enlever des espace / Regex expression
    Bonjour,

    Je veux enlever les espaces "blanc" dans du String " -12.121 74.060 5", mon code est le suivant :

    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
     
     
    package vue;
     
    public class WindowsMain {
     
     
    	public static void main(String[] args) {
     
     
        	String line = "    -12.121     74.060   5";
     
    		String[] stab = line.split(" [ \\s]+");
     
    		System.out.println("Taille :" + stab.length);
    	    for (int x=0; x<stab.length; x++)
    	         System.out.println("|"+stab[x]+"|");
     
     
    	}
    }
    Output :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Taille :4
    ||
    |-12.121|
    |74.060|
    |5|
    Comment faire pour ne plus avoir le premier espace et n'avoir que les nombres ? c'est quoi la regex expression qui me permettras cela ?

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    pas besoin de changer de regexp, je pense qu'il suffit de tester chaque token pour voir s'il est vide ou non:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String[] splits = s.split("\\s");
    for(String split : splits) {
      if(!"".equals(split.tim())) {
        // faire qq chose...
      }
    }
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Sinon tu peux faire ceici:

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par tupac25 Voir le message
    Sinon tu peux faire ceici:
    Euh...
    - Si tu le fais avant le split(), ça enlève les séparateurs entre nombres.
    - Si tu le fais après le split(), ça ne change rien à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Oui, c'est une façon de faire, mais je dois traiter des centaines de milliers de lignes, et je pense qu'une vérification ou des pré-traitements sont un peu coûteux.

    Est ce que la méthode split est plus rapide que le StringTokenizer ?

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Et merci pour vos réponses !!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Points : 192
    Points
    192
    Par défaut
    Bonjour,
    pourquoi ne pas tout simplement changer de séparateur entre les nombres?
    Sinon, j'utilise la méthode String.trim() pour supprimer les espaces.

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par neljaouh Voir le message
    Oui, c'est une façon de faire, mais je dois traiter des centaines de milliers de lignes, et je pense qu'une vérification ou des pré-traitements sont un peu coûteux.
    À moins de le faire sur un téléphone portable, des centaines de milliers de lignes n'est rien du tout. Ne t'occupe pas de ce genre d'optimisation, Java s'en sortira mieux que toi. Pas la peine de me croire sur parole, vérifie. La seule optimisation qui doit t'intéresser, c'est le calcul de complexité minimale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Est ce que la méthode split est plus rapide que le StringTokenizer ?
    Non... Elle fait bien plus de choses. Mais pourquoi s'embêter ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Le plus simple me semble de tout simplement utiliser la méthode trim() avant la méthode split().
    Ainsi le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String line = "    -12.121     74.060   5";
    String[] stab = line.trim().split("\\s+");
    for (int x = 0; x < stab.length; x ++) {
        System.out.println("|" + stab[x] + "|");
    }
    Affiche
    |-12.121|
    |74.060|
    |5|
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par thelvin Voir le message
    À moins de le faire sur un téléphone portable, des centaines de milliers de lignes n'est rien du tout.
    Pas forcément... La création d'une regexp peu s'avérer couteuse.
    Mais c'est facilement corrigeable après coup en cas de problème, et en effet il vaut mieux se centrer sur l'algorithme que sur l'optimisation


    Sinon petite question pour neljaouh : tu veux enlever les blancs... mais pourquoi faire ?
    Je veux dire quel est l'objectif exact de tout cela ?


    a++

  11. #11
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Salut,

    En Python il y a une méthode de chaîne join() qui fusionne plusieurs chaînes en alternance avec un séparateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ch = "    -12.121     74.060   5"
    print '|\n|'.join(ch.split()) 
    # affiche
    -12.121|
    |74.060|
    |5
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ch = "    -12.121     74.060   5"
    print '|' + '|\n|'.join(ch.split()) + '|'
    # affiche
    |-12.121|
    |74.060|
    |5|
    C'est court , et l'avantage est qu'il est plus rapide d'afficher la chaine
    '|-12.121|\n|74.060|\n|5|'
    qu'effectuer séparément l'affichage de plusieurs lignes.



    J’aimerais savoir s’il existe une fonction similaire à join() en Java. Je n’ai pas trouvé dans la doc (après une recherche sommaire).

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas dans la bibliothèque de base, mais la plupart des bibliothèques de framework en proposent une, dans leurs "utilitaires String".

    Ceci étant dit, ce que tu nous fais là peut se faire avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "|" + ch.trim().replaceAll("\\s+", "|\n|") + "|";
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Merci pour la réponse.


    L’analogue de ton instruction en Python est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import re
    print '|' + re.sub('\\s+','|\n|',ch.strip()) + '|'
    C’est à dire qu’on est obligé d’importer le module d’expressions régulières.

    Il n’en est pas de même en Java ? replaceAll() est immédiatement disponible en tant que fonction de la bibliothèque de base ?




    Mais replaceALL() et sub() ne font pas la même chose que join(): elles prennent une chaîne comme argument et renvoient une chaîne.
    Tandis que join() prend une liste, et plus généralement n’importe quelle séquence de chaînes et renvoie la concaténation des élements de la séquence.

    J’aimerais savoir les frameworks dans lesquels il y a des analogues de join() en Java et sous quel(s) nom(s) on les trouve.




    Nota:
    mon instruction Python peut aussi s’écrire
    print '|\n|'.join(ch.split()).join('||')

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Il n’en est pas de même en Java ? replaceAll() est immédiatement disponible en tant que fonction de la bibliothèque de base ?
    Cela fait partie de l'API de base...




    Citation Envoyé par eyquem Voir le message
    Mais replaceALL() et sub() ne font pas la même chose que join(): elles prennent une chaîne comme argument et renvoient une chaîne.
    Tandis que join() prend une liste, et plus généralement n’importe quelle séquence de chaînes et renvoie la concaténation des élements de la séquence.
    En même temps tu fais un split() suivi d'un join() pour simuler un remplacement... Donc je ne vois pas en quoi c'est gênant de faire un replaceAll(). Au contraire même...



    Citation Envoyé par eyquem Voir le message
    J’aimerais savoir les frameworks dans lesquels il y a des analogues de join() en Java et sous quel(s) nom(s) on les trouve.
    Aucune idée... mais bon cela peut se coder en deux deux...

    a++

  15. #15
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    En même temps tu fais un split() suivi d'un join() pour simuler un remplacement... Donc je ne vois pas en quoi c'est gênant de faire un replaceAll(). Au contraire même...
    Tout à fait.
    J’ai tendance à considérer moi aussi qu’il est plus “naturel“ de faire une transformation d’une chaîne au moyen d’une fonction replaceALL() ou sub() que de devoir d’abord découper la chaîne avec split() puis de recoller les morceaux avec join() et un séparateur comme colle.



    Cependant:


    1) en Python join() est disponible comme fonction built-in tandis que re.sub() nécessite une importation, même si on peut limiter cette importation à juste la fonction sub() et non pas le module en entier.

    En Java, replaceAll() utilise les expressions régulières mais est built-in: cela me surprend, mais c’est bien -> on peut l’utiliser facilement, de préférence à join()

    Ceci dit, que ce soit avec join() ou avec replaceAll()/sub() , on est obligé de recourir à une deuxième fonction pour obtenir les arguments conformes pour ces fonctions à partir de la chaîne de départ: split() avant join() , et trim()/strip() pour replaceAll()/sub() . L’utilisation de split() en Python n’est donc pas le point déterminant.

    Pour moi le point déterminant est la réticence que j’ai à devoir importer quelque chose juste pour faire un petit truc comme ça. Si ça peut se faire facilement avec replaceAll() en Java, c’est pareil, pour moi.



    2) ignorant la facilité d’utilisation de replaceAll() en Java, et étant porté à utiliser join() plutôt que re.sub() en Python, je me suis étonné de ne pas voir de réponse proposant de créer une seule chaîne à afficher plutôt que plusieurs et c’est l’occasion de me renseigner sur l’existence d’une analogue de join() en Java.

    On me dit que ça existe, mais je constate que contrairement à replaceAll() , ça n’a pas l’air évident de disposer de cette fonction puisqu’elle se trouve dans certains frameworks, sans bien savoir où.

    Alors que cette fonction est très intéressante.
    On connaît les inconvénients posés par le fait que les chaînes sont non-mutables, ce qui est le cas aussi bien en Python qu’en Java:
    quand on veut concaténer les chaînes d’une séquence S sans connaître à l’avance le nombre d’éléments de S, et par conséquent sans pouvoir écrire directement une expression finie du genre S[0] + S[1] + S[2] + S[3] + S[4] + S[5], et qu’on est donc obligé d’écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    somme = ”
    for el in S:
        somme = somme + el
    il y a autant d’opérations somme + el et de nouvelle instance de chaîne créées qu’il y a d’éléments dans la chaîne.

    Tandis que "".join(S) concatène l’ensemble des éléments de S en une seule passe, c’est à dire que la chaîne résultat est la seule instance de chaîne construite lors du processus.

    Il m’intéresse de savoir si Java dispose d’une fonction aussi performante et de la connaître précisément.



    ------------------------


    Soit dit en passant, ma préférence pour une méthode replace() ou sub() à la place d’une méthode join() (quand c’est possible sans importation) est elle bien justifiée ?

    Car je ne vois pas trop comment une replace() fait autrement que couper une chaîne en morceaux, remplacer certains morceaux par les modifications, et recoller le tout. La même chose que split() suivie de join() , quoi.




    Nota: on peut aussi écrire une expression génératrice pour produire le même résultat, en Python:
    print '\n'.join( mot.join('||') for mot in ch.split() )

  16. #16
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Pour moi le point déterminant est la réticence que j’ai à devoir importer quelque chose juste pour faire un petit truc comme ça. Si ça peut se faire facilement avec replaceAll() en Java, c’est pareil, pour moi.
    Pourquoi cette réticence à faire un import ? Quand il existe des choses qui simplifient le code, qui permettent de le rendre plus compréhensible pourquoi s'en priver ? En quoi un import est-il négatif ?

    Citation Envoyé par eyquem Voir le message
    2) ignorant la facilité d’utilisation de replaceAll() en Java, et étant porté à utiliser join() plutôt que re.sub() en Python, je me suis étonné de ne pas voir de réponse proposant de créer une seule chaîne à afficher plutôt que plusieurs ...
    Dans la majorité des cas lorsqu'on split une chaine c'est pour pouvoir traiter chaque élément un à un. Dans l'exemple de neljaouh, je pense que l'affichage ne servait qu'à illustrer le "problème" .

    Citation Envoyé par eyquem Voir le message
    On connaît les inconvénients posés par le fait que les chaînes sont non-mutables, ce qui est le cas aussi bien en Python qu’en Java:
    quand on veut concaténer les chaînes d’une séquence S sans connaître à l’avance le nombre d’éléments de S, et par conséquent sans pouvoir écrire directement une expression finie du genre S[0] + S[1] + S[2] + S[3] + S[4] + S[5], et qu’on est donc obligé d’écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    somme = ”
    for el in S:
        somme = somme + el
    il y a autant d’opérations somme + el et de nouvelle instance de chaîne créées qu’il y a d’éléments dans la chaîne.
    cf StringBuilder
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  17. #17
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par eyquem Voir le message
    1) en Python join() est disponible comme fonction built-in tandis que re.sub() nécessite une importation, même si on peut limiter cette importation à juste la fonction sub() et non pas le module en entier.
    Je n'ai pas critiqué cela

    En fait c'est plutôt ta démarche que je critique. Plus précisément le fait de vouloir traduire "tel quel" un code Python en Java. (note que ceci n'est pas spécifique à Java mais valable pour n'importe quel langage).


    En fait plutôt que de te dire : en Python je fait "ceci" : comment faire la même chose en Java ?
    Tu devrais plutôt te poser la question suivante : Comment faire "cela" en Java ?


    Une solution dans un langage n'est pas forcément adapté à un autre langage




    Citation Envoyé par eyquem Voir le message
    On me dit que ça existe, mais je constate que contrairement à replaceAll() , ça n’a pas l’air évident de disposer de cette fonction puisqu’elle se trouve dans certains frameworks, sans bien savoir où.
    En effet à ma connaissance il n'y a pas de tel méthode dans l'API standard.
    Mais comme je l'ai dit ce n'est pas bien méchant à implémenter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static String join(String separator, String... strings) {
    		if (strings == null || strings.length == 0)
    			return "";
     
    		StringBuilder buf= new StringBuilder(strings[0]);
    		for (int i = 1; i < strings.length; i++) {
    			buf.append(separator).append(strings[i]);
    		}
    		return buf.toString();
    	}
    Citation Envoyé par eyquem Voir le message
    On connaît les inconvénients posés par le fait que les chaînes sont non-mutables, ce qui est le cas aussi bien en Python qu’en Java:
    quand on veut concaténer les chaînes d’une séquence S sans connaître à l’avance le nombre d’éléments de S, et par conséquent sans pouvoir écrire directement une expression finie du genre S[0] + S[1] + S[2] + S[3] + S[4] + S[5], et qu’on est donc obligé d’écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    somme = ”
    for el in S:
        somme = somme + el
    il y a autant d’opérations somme + el et de nouvelle instance de chaîne créées qu’il y a d’éléments dans la chaîne.
    En effet. C'est pourquoi on utilise en Java les classes StringBuffer/StringBuilder pour cela


    Citation Envoyé par eyquem Voir le message
    Car je ne vois pas trop comment une replace() fait autrement que couper une chaîne en morceaux, remplacer certains morceaux par les modifications, et recoller le tout. La même chose que split() suivie de join() , quoi.
    Ben oui... quel est le problème ?


    a++

  18. #18
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par eyquem Voir le message
    [...] et c’est l’occasion de me renseigner sur l’existence d’une analogue de join() en Java.

    On me dit que ça existe, mais je constate que contrairement à replaceAll() , ça n’a pas l’air évident de disposer de cette fonction puisqu’elle se trouve dans certains frameworks, sans bien savoir où.
    Il n'y en a pas dans la bibliothèque de base Java, c'est tout. Au fond, on peut se demander pourquoi, mais il n'y en a pas. Peut-être parce qu'on ne sait pas trop dans quelle classe ça se mettrait, et que ça se code en 2 minutes chrono, test compris.

    Du coup, les bibliothèques dites "utilitaires," que ce soit commons-lang ou Spring ou bien d'autres, reconnaissent que c'est bien pratique d'avoir quelque chose de ce genre, et en fournissent une.
    Peu importe quelle bibliothèque. À partir du moment où c'est une bibliothèque qui inclut des "trucs souvent utiles", tu peux être certain qu'il y a ça dedans.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    La classe Splitter de Guava t'aidera bien à mon avis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String chaine = "    -12.121     74.060   5";
    Iterable<String> splitted = Splitter.on(' ').omitEmptyStrings().split(chaine);
    @Eyquem:

    La classe Joiner de la même bibliothèque fait... des joins relativement bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] chaines = {"a", null, "b", "c" };
    String joined = Joiner.on(", ").skipNulls().join(chaines);

Discussions similaires

  1. problème posé par la méthode string.split
    Par jazzfab dans le forum C#
    Réponses: 27
    Dernier message: 17/02/2011, 15h54
  2. Quel est la méthode de lecture pour lire des chars (RAF)
    Par beegees dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 23/07/2007, 07h57
  3. Requete pour enlever des caracteres
    Par Drozo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/08/2006, 16h52
  4. fonction pour enlever des tags
    Par sunp dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 19/12/2005, 20h47
  5. Réponses: 5
    Dernier message: 07/07/2004, 16h05

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