Recherche…


Remarques

Le but ici est de ne pas perdre de contenu, donc la regex ne doit consommer aucune correspondance. Au contraire , il doit correspondre entre le dernier caractère de l'entrée cible précédente et le premier caractère de la prochaine entrée cible. Par exemple, pour les sous-chaînes de 8 caractères, nous devons décomposer l'entrée (c'est-à-dire la correspondance) aux endroits indiqués ci-dessous:

a b c d e f g h i j k l m n o p q r s t u v w x y z
               ^               ^               ^

Ignorer les espaces dans l'entrée qui étaient nécessaires pour afficher entre les positions de caractère.

Briser une chaîne en sous-chaînes de longueur connue

L'astuce consiste à utiliser un look-behind avec le regex \G , qui signifie "fin du match précédent":

String[] parts = str.split("(?<=\\G.{8})");

L'expression rationnelle correspond à 8 caractères à la fin du dernier match. Puisque dans ce cas la correspondance est de largeur nulle, on pourrait simplement dire "8 caractères après la dernière correspondance".

De manière pratique, \G est initialisé pour démarrer l’entrée, donc cela fonctionne aussi pour la première partie de l’entrée.

Briser une chaîne en sous-chaînes de longueur variable

Identique à l'exemple de longueur connue, mais insérez la longueur dans l'expression régulière:

int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow