Java Language
Divisione di una stringa in parti di lunghezza fissa
Ricerca…
Osservazioni
L'obiettivo qui è non perdere il contenuto, quindi la regex non deve consumare (corrispondere) a qualsiasi input. Piuttosto, deve corrispondere tra l'ultimo carattere dell'ingresso target precedente e il primo carattere del prossimo input target. ad es. per le sottostringhe di 8 caratteri, abbiamo bisogno di interrompere l'input up (cioè la corrispondenza) nei punti indicati di seguito:
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
^ ^ ^
Ignora gli spazi nell'input che dovevano mostrare tra le posizioni dei personaggi.
Rompere una stringa in sottostringhe di una lunghezza nota
Il trucco è usare un look-behind con regex \G
, che significa "fine della precedente corrispondenza":
String[] parts = str.split("(?<=\\G.{8})");
La regex corrisponde a 8 caratteri dopo la fine dell'ultima partita. Dato che in questo caso la corrispondenza è a larghezza zero, potremmo semplicemente dire "8 caratteri dopo l'ultima partita".
Convenientemente, \G
viene inizializzato per iniziare l'input, quindi funziona anche per la prima parte dell'ingresso.
Rompere una stringa in sottostringhe di lunghezza variabile
Come l'esempio di lunghezza noto, ma inserisci la lunghezza in regex:
int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");