Java Language
Dividir una cadena en partes de longitud fija
Buscar..
Observaciones
El objetivo aquí es no perder contenido, por lo que la expresión regular no debe consumir (igualar) ninguna entrada. En su lugar, debe coincidir entre el último carácter de la entrada de destino anterior y el primer carácter de la siguiente entrada de destino. por ejemplo, para las subcadenas de 8 caracteres, necesitamos dividir la entrada (es decir, hacer coincidir) en los lugares marcados a continuación:
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
^ ^ ^
Ignore los espacios en la entrada que fueron necesarios para mostrar entre las posiciones de los caracteres.
Rompe una cuerda en subcadenas, todas de una longitud conocida
El truco es usar un look-behind con el regex \G
, que significa "final de la coincidencia anterior":
String[] parts = str.split("(?<=\\G.{8})");
La expresión regular coincide con 8 caracteres después del final de la última coincidencia. Como en este caso la coincidencia es de ancho cero, podríamos decir más simplemente "8 caracteres después de la última coincidencia".
Convenientemente, \G
se inicializa al inicio de la entrada, por lo que también funciona para la primera parte de la entrada.
Rompe una cadena en subcadenas todas de longitud variable
Igual que el ejemplo de longitud conocida, pero inserte la longitud en expresiones regulares:
int length = 5;
String[] parts = str.split("(?<=\\G.{" + length + "})");