Java:Opérations sur les chaînes de caractères
De WIKI.minetti.org
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.