Java Language
Dela upp en sträng i delar med fast längd
Sök…
Anmärkningar
Målet här är att inte tappa innehåll, så regexen får inte konsumera (matcha) någon inmatning. Snarare måste den matcha mellan det sista tecknet i den föregående målinmatningen och det första tecknet i nästa målinmatning. till exempel för 8-karaktärsunderlag måste vi bryta inmatningen (dvs. matchning) på de platser som är markerade nedan:
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
^ ^ ^
Ignorera mellanrummen i ingången som krävs för att visa mellan teckenpositioner.
Bryt en sträng upp i underlag med en känd längd
Tricket är att använda en look-bak med regex \G
, vilket betyder "slutet på föregående match":
String[] parts = str.split("(?<=\\G.{8})");
Regexet matchar 8 tecken efter slutet av den sista matchen. Eftersom i detta fall matchen är nollbredd, kan vi mer enkelt säga "8 tecken efter den sista matchen".
Bekvämt initialiseras \G
att börja ingången, så det fungerar även för den första delen av ingången.
Bryt en sträng upp i underlag med alla variabla längder
Samma som känt längdsexempel, men sätt in längden i regex:
int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");