Java:Opérations sur les chaînes de caractères
De WIKI.minetti.org
Révision de 7 avril 2016 à 16:53 par Jp (discussion | contributions) (Page créée avec « == Transformation d'une chaîne de caractères en tableau == La méthode [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#split(java.lang.String) split] de l... »)
Sommaire
Transformation d'une chaîne de caractères en tableau
La méthode split de l'objet java.lang.String permet de transformer la chaîne de caractères en un tableau grâce à un caractère de séparation.
Exemple
String myString = "abc-def-ghi-jklm"; String[] myTab = myString.split("-");
Dans cet exemple, le tableau myTab va contenir les éléments suivants:
- abc
- def
- ghi
- jklm
Insertion de données dans une chaîne de caractères
La classe java.text.MessageFormat permet d'insérer des données dans une chaîne de caractères.
Par exemple:
- {0,number,integer} pour afficher un nombre entier;
- {0,date,dd/MM/yyyy} pour afficher une date sous la forme jj/mm/aaaa;
- {0,date,short} pour afficher une date sous la forme courte;
- {0,date,medium} pour afficher une date sous la forme moyenne;
- {0,date,long} pour afficher une date sous la forme longue;
- {0,date,full} pour afficher une date sous la forme entière.
Manipuler des chaînes de caractères avec les expressions régulières
La méthode replaceAll permet de remplacer du texte à l'aide des expressions régulières.
Par exemple:
- Pour supprimer le caractère / en début de chaîne:
replaceAll("^\\/", "")
- Pour remplacer tous les caractères / par -:
replaceAll("\\/", "-")
- Pour extraire le texte placé juste avant la dernière occurrence du caractère . (ex: récupérer le nom d'un fichier sans son extension):
replaceAll("(.*)\\..*$", "$1")
- Pour extraire le texte placé juste après la dernière occurrence du caractère / (ex: récupérer le nom d'un fichier sans son chemin):
replaceAll(".*\\/(.*)$", "$1")
- Pour supprimer les caractères espaces (c'est à dire les caractères \t, \n, \r, et \f):
replaceAll("\\s", "")
- Pour supprimer les caractères espaces en début de chaîne (c'est à dire les caractères \t, \n, \r, et \f):
replaceAll("^\\s*", "")
- Pour remplacer tous les caractères . par /:
replaceAll("\\.", "/")
- Pour supprimer tous les sauts de lignes:
replaceAll("[\r\n]+", "")
- Pour supprimer tous les caractères non alphanumériques:
replaceAll("[^0-9,A-Z]", "")
On peut aussi utiliser la classe Pattern pour parser une chaîne de caractères:
final Matcher matcher = Pattern.compile("^(.*)P((\\d*)Y|)((\\d*)M|)((\\d*)D|)(T((\\d*)H|)((\\d*)M|)((\\d*)S|)|)$").matcher(value.trim()); final boolean negative = "-".equals(matcher.replaceAll("$1").trim()); final String yearStr = matcher.replaceAll("$3"); final String monthStr = matcher.replaceAll("$5"); final String dayStr = matcher.replaceAll("$7"); final String hourStr = matcher.replaceAll("$10"); final String minStr = matcher.replaceAll("$12"); final String secStr = matcher.replaceAll("$14");
Dans l'exemple ci-dessus, on parse une durée (ou période) au format XML.