Java : diviser une chaîne de caractères

En programmation, il arrive souvent que des données doivent être transférées d'une forme à une autre. Un exemple en est la décomposition de chaînes de caractères en sous-ensembles individuels. La bibliothèque standard Java vous fournit pour cela une fonction spécifique que nous allons vous présenter ici.

  • La fonction split
  • Expressions régulières

La fonction split

La classe String vous fournit une fonction permettant de diviser une chaîne de caractères en sous-ensembles. La signature de la fonction est la suivante :

public String[] split(String regex)

La fonction attend donc une chaîne comme paramètre d'entrée et renvoie un tableau de chaînes. Le paramètre d'entrée est une expression régulière qui spécifie à quels endroits la chaîne doit être divisée. L'exemple suivant peut servir d'explication:

String numbers = "31-x-8-x-6-x-12-x-19-x-42";
String[] split = numbers.split("-x-") ; // [31, 8, 6, 12, 19, 42]

System.out.println(split[0]) ; // retourne "31"
System.out.println(split[1]) ; // retourne "8"

La chaîne de caractères numbers contient différents nombres séparés par un moins. La fonction membre split prend ce caractère en argument et renvoie les différentes sous-chaînes précisément entre ces caractères dans un tableau. Il est important ici que la chaîne transmise en argument soit une expression régulière. Cela signifie que si un métacaractère Regex doit être trouvé, il doit être précédé d'une double barre oblique inverse () :

String numbers = "31[-]8[-]6[-]12[-]19[-]42";
String[] split = numbers.split("\\]") ; // [31, 8, 6, 12, 19, 42]
Métacaractères Regex sont ( ) { ^ | $ | ? * + . < > - = !

Expressions régulières

Pour les chaînes plus compliquées, il est intéressant d'utiliser des expressions régulières dans la fonction split. Même si une chaîne a différents types de chaînes de caractères entre les sous-chaînes recherchées, vous pouvez toujours identifier les sous-chaînes sans problème.

String numbers = "31-=dq-8-ab-6-rt-12-xz-19-??-42";
String[] split = numbers.split("-[^0-9]*-") ; // [31, 8, 6, 12, 19, 42]

L'expression régulière "-[^0-9]*-" trouve toutes les chaînes de caractères qui ne sont pas des nombres et qui sont entourées de deux signes moins. Ce sont exactement les chaînes de caractères auxquelles la chaîne de nombres doit être coupée. Les expressions régulières peuvent souvent vous faciliter la vie en tant que programmeur, mais elles ne sont pas toujours faciles à assembler. Si vous souhaitez en savoir plus sur les expressions régulières, nous vous renvoyons à l'introduction officielle aux expressions régulières en Java. Vous pouvez également consulter le chapitre correspondant dans l'îlot Java.