Bonjour. J'ai la chaine suivante:
Je cherche la méthode qui permet d'afficher cette chaine sans la dernière virgule c'est-à-dire celle qui se trouve juste après le mot soleil.Code:String chaine = "1,2,3,soleil," ;
Merci
Version imprimable
Bonjour. J'ai la chaine suivante:
Je cherche la méthode qui permet d'afficher cette chaine sans la dernière virgule c'est-à-dire celle qui se trouve juste après le mot soleil.Code:String chaine = "1,2,3,soleil," ;
Merci
une solution
ce qui donneCode:
1
2 System.out.printf("chaine: %s %s", chaine,(new StringBuilder(chaine)).deleteCharAt(chaine.length()-1).toString());
Code:
1
2 chaine: 1,2,3,soleil, 1,2,3,soleil
Salut,
Une solution peut consister à prendre tous les caractères sauf le dernier :
S'il s'agit de supprimer tout ce qu'il y derrière la dernière virgule, y compris celle-ci, c'est chercher la dernière virgule (lastIndexOf) et prendre ce qu'il y a avant :Code:System.out.println( chaine.substring(0, chaine.length()-1) ); // attention erreur si chaine vide
Code:System.out.println( chaine.substring(0, chaine.lastIndexOf(",")) ); // attention erreur si pas de , dans la chaîne
On peut également utiliser une expression régulière pour chercher ce qu'on veut enlever et le remplacer par une chaîne vide.
Par exemple, en remplaçant le dernier caractère :
S'il y a des caractères derrière la virgule et qu'on veut supprimer la dernière virgule et tout ce qu'il y a après :Code:System.out.println( chaine.replaceAll( ".\\Z", "") );
Si on veut supprimer tout ce qu'il y a après le mot soleil :Code:System.out.println( chaine.replaceAll( ",[^,]*\\z", "") );
Si on veut supprimer le caractère juste après le mot soleil :Code:System.out.println( chaine.replaceAll( "(?<=soleil).*", "") );
Code:System.out.println( chaine.replaceAll( "(?<=soleil).", ""));
Merci beaucoup, ça marche.
:)