Splitting chaine de caractère java
Résolu
morakevi
-
morakevi Messages postés 16 Statut Membre -
morakevi Messages postés 16 Statut Membre -
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
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
1 réponse
-
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-
-
-
-
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). -
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+"'");
-