Zoeken…


Opmerkingen

Het doel hier is om geen content te verliezen, dus de regex mag geen input gebruiken (matchen). Het moet eerder overeenkomen tussen het laatste teken van de vorige doelinvoer en het eerste teken van de volgende doelinvoer. bijv. voor substrings van 8 tekens moeten we de invoer opsplitsen (dwz overeenkomen) op de hieronder gemarkeerde plaatsen:

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
               ^               ^               ^

Negeer de spaties in de invoer die nodig waren om tussen tekens te tonen.

Breek een string in substrings van een bekende lengte

De truc is om een look-behind te gebruiken met de regex \G , wat "einde vorige wedstrijd" betekent:

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

De regex komt overeen met 8 tekens na het einde van de laatste wedstrijd. Omdat de match in dit geval nul is, kunnen we eenvoudiger zeggen "8 tekens na de laatste match".

Handig is dat \G wordt geïnitialiseerd om de invoer te starten, dus het werkt ook voor het eerste deel van de invoer.

Breek een string op in substrings met een variabele lengte

Hetzelfde als het bekende lengtevoorbeeld, maar voer de lengte in regex in:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow