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

méthode split() de la classe String ?

6 réponses
Avatar
DM
Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux .. à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument pas le même
résultat (tokens=[, , , c])

Avez vous une idée ?

merci d'avance

DM

6 réponses

Avatar
Kupee
Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux .. à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument pas le même
résultat (tokens=[, , , c])

Avez vous une idée ?

merci d'avance


Oui la méthode split prend une regexp et . représente n'importe quel
caractère. Essaye avec string.split("..")

Avatar
Cenekemoi
Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux .. à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument pas le
même résultat (tokens=[, , , c])

Avez vous une idée ?


Oui, j'en ai une...

"split" fait appel à une expression régulière et pas à une chaîne de
caractères !

cf. http://www.rgagnon.com/javadetails/java-0438.html pour un exemple
avec des points.

--
Cordialement, Thierry ;-)

Avatar
DM
Merci beaucoup ... ca fonctionne à merveille ;-)
A ce sujet sais tu ou peut on trouver un bon tutoriel sur les regexp ?

merci encore
DM

Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux .. à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument pas le
même résultat (tokens=[, , , c])

Avez vous une idée ?

merci d'avance



Oui la méthode split prend une regexp et . représente n'importe quel
caractère. Essaye avec string.split("..")



Avatar
Hervé AGNOUX
DM wrote:

A ce sujet sais tu ou peut on trouver un bon tutoriel sur les regexp ?



http://cyberzoide.developpez.com/java/regex/


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
cilovie
Sans regexp voir
http://jakarta.apache.org/commons/lang/api-release/org/apache/commons/lang/StringUtils.html#split(java.lang.String,%20char)

commons-lang un régal d'outils

Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux .. à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument pas le même
résultat (tokens=[, , , c])

Avez vous une idée ?

merci d'avance

DM


Avatar
konavab86
DM a écrit le 11/05/2006 à 14h54 :
Bonjour à tous,

Je voudrais utiliser la méthode split() de la classe String.
Le code suivant (très simple) me retourne bien ce que je veux ..
à
savoir : a b c (tokens=[a, b, c])

public static void main(String[] args) {
String s = "a,,b,,c";
String[] tokens = s.trim().split(",,");
for (int i = 0; i < tokens.length; i++) {
System.out.println(tokens[i]);
}
}

Par contre, si maintenant la chaine s vaut "a..b..c" et que
j'applique
la méthode s.trim().split("..") ... je n'obtiens absolument
pas le même
résultat (tokens=[, , , c])

Avez vous une idée ?

merci d'avance

DM


en effet le caractère . est un caractère spécial donc difficile à gérer avec les methodes de manipulation de caractère comme split . en effet l'astuce c'est d'utiliser la methode replace pour écraser les .. par ,, et ensuite appliquer le split voila le code il marche parfaitement
String s="a..b..c";
String rep=s.replace("..",",,"); //cette partie remplace tous les .. par ,,
String rec[]=rep.slim().split(",,");
for(int i=0;i<rec.length;i++)
{
System.out.println(rec[i]);
}