Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb avec la fonction split de la String

8 réponses
Avatar
Cyrille Proust
Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 \n 2 \n 8...

Merci,

Cyrille Proust

8 réponses

Avatar
Rémy
"Cyrille Proust" a écrit dans le
message de news:cp20k1$r33$
Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust


Bonjour,

String.split utilise une regular expression en paramètre.

En tant que regular expression, "." correspond à n'importe quel caractère.
Donc pour split, il n'y a que des séparateurs dans le texte. J'aurais pensé
que split rendrait plutôt un tableau de 0 elements...

En tout cas, pour découper avec un séparateur '.', il faut utiliser "."
comme paramètre de split.

Rémy

Avatar
Zazoun
Bonjour,
ce n'est pas un comportement normal : ce que tu devrais obtenir, c'est
que le tableau numbers devrait être de taille nulle.
En effet, String.split(String regex) prend en argument une expression
régulière, dans laquelle "." veut dire : n'importe quel caractère.
Et dans "1.8.2", quand on enlève tout ce qui matche n'importe quel
caractère, il ne reste pas grand chose.

Si tu veux utiliser le caractère '.' comme séparateur, il faut
utiliser l'expression régulière "." dans ton code.
Pour en savoir un peu plus sur les expressions régulières, je te
conseille de lire au moins ceci :
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
Zazoun
Avatar
|||Cypher|||
Salut.

Essayes plutôt un StringTokenizer. C fait pour.

@+


--
http://e-cologis.com
le site des colocataires


"Cyrille Proust" wrote in message
news:cp20k1$r33$
Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust


Avatar
Cédric Chabanois
Il y a aussi StringUtils.split de commons-utils (Apache)
http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/StringUtils.html

Cédric

Salut.

Essayes plutôt un StringTokenizer. C fait pour.

@+


--
http://e-cologis.com
le site des colocataires


"Cyrille Proust" wrote in message
news:cp20k1$r33$

Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust







Avatar
jlp
Salut.

Essayes plutôt un StringTokenizer. C fait pour.

@+


--
http://e-cologis.com
le site des colocataires


"Cyrille Proust" wrote in message
news:cp20k1$r33$

Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust




mettre la valeur Unicode du point "." . Car en regexp . remplace

n'importe quel caractère voir classe
package java.util.regex Class Pattern


Avatar
Patrick Gras
Bonjour,

En fait la Javadoc conseille de ne plus utiliser StringTokenizer, mais
String.split...

J'ai aussi testé ton code en Java 1.4 et 1.5 et j'obtient un tableau vide
les deux fois (et pas 1.8.2)

Comme qqn l'a déjà dit : String[] numbers = str.split (".");


-Patrick

" StringTokenizer is a legacy class that is retained for compatibility
reasons although its use is discouraged in new code. It is recommended that
anyone seeking this functionality use the split method of String or the
java.util.regex package instead."



"|||Cypher|||" wrote in message
news:41b60bc4$0$31293$
Salut.

Essayes plutôt un StringTokenizer. C fait pour.

@+


--
http://e-cologis.com
le site des colocataires


"Cyrille Proust" wrote in message
news:cp20k1$r33$
Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust






Avatar
Charron Didier

Salut.

Essayes plutôt un StringTokenizer. C fait pour.

@+


--
http://e-cologis.com
le site des colocataires


"Cyrille Proust" wrote in message
news:cp20k1$r33$

Bonjour,

Est-ce un comportement normal ?

String str = "1.8.2";
String[] numbers = str.split (".");
for (int i=0; i < numbers.length; i++)
System.out.println (numbers[i]);

Resultat : 1.8.2 alors que normalement j'attendais 1 n 2 n 8...

Merci,

Cyrille Proust





mettre la valeur Unicode du point "." . Car en regexp . remplace

n'importe quel caractère voir classe
package java.util.regex Class Pattern
String[] numbers = str.split (".");

cela devrait marcher
DC



Avatar
yvon.thoravalNO-SPAM
Charron Didier wrote:

String[] numbers = str.split (".");


no c'est plutot :
String[] numbers = str.split (".");

je l'utilise couramment pour obtenir l'extension d'un fichier ie :
String monBeauFichier ="/quelle/est/belle/mon/image.jpg";
String[] exts = monBeauFichier.split (".");
String extension = exts[exts.length - 1];

--
yt