Splitting chaine de caractère java

Résolu
morakevi -  
morakevi Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'aimerai savoir comment je peux faire pour splitter une chaine de caractère à chaque fois que je trouve un nombre.

donc par exemple si j'ai ceci : af bd ef 45 dff 12 df

j'aimerai obtenir:
- af bd ef
- 45
- dff
-12
-df

Merci d'avance pour vos réponses

A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Il y a plein de manières différentes de faire, en voici une :

String str = "af bd ef 45 dff 12 df";
str = str.replaceAll("(\\D)(\\d)", "$1\n$2");
str = str.replaceAll("(\\d)(\\D)", "$1\n$2");
System.out.println(str);
La confiance n'exclut pas le contrôle
1
morakevi Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   8
 
Bonjour KX,

Merci pour ta réponse, mais j'aimerai donc obtenir X String différent, et non simplement mettre des retour chariot.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bah, ce n'était pas très clair dans ta question...
Rien ne t'empêche de faire un split("\n") sur la valeur du résultat (et mettre autre chose que \n du coup...)
0
morakevi Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   8
 
oui effectivement je peux faire ça. mais il ne serait pas plus propre de faire ça avec une expression régulière ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Les replaceAll que j'ai fait (et qui peuvent se simplifier pour mettre les deux en un) ce sont des expressions régulières déjà.
Si tu fais un split la coupure ce fera "forcément" (à vérifier) au détriment d'un groupe de caractères (le \n dans mon exemple) d'où l'intérêt de le rajouter pour mieux l'enlever ensuite.
Après il y a plein d'autres manières de traiter ton problème, mais ce sera majoritairement des solutions à base de boucles (caractère par caractère, sur un Marcher, etc.) alors que la mienne offre une alternative (relativement) simple et concise (même si elle a été choisie sur une mauvaise compréhension de ta question).
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si tu fais un split la coupure ce fera "forcément" (à vérifier) au détriment d'un groupe de caractères (le \n dans mon exemple)
Après vérification, on peut faire un split sans consommer aucun caractère.

Ça donne une expression régulière un peu tordue mais ça fonctionne :

String str = "af bd ef 45 dff 12 df";
System.out.println(str);
String[] tab = str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
for (String s : tab)
    System.out.println("'"+s+"'");
0