Nota: Mi Inglés es algo pobre
¿Cómo dividir String
en java (cada cuarto y tercero posición).
Por ejemplo, si tengo una cadena de caracteres, como:
0110000 1100001 1001100 00110000
(Sin espacios, los espacios son sólo representaciones)
Si, quiero dividirlo como:
0110 000 1100 001 1001 100 0011 000
(sin espacios)
Cómo hacer que en java?
Ya he probado de la siguiente manera:
jshell> "01100001100001100110000110000".split("(?<=\\G.{4})");
$22 ==> String[8] { "0110", "0001", "1000", "0110", "0110", "0001", "1000", "0" }
Como se muestra se dividió en todos los 4th position
que no 4th position && 3rd position
.
Además, algunas cosa que es
jshell> "01100001100001100110000110000".split("(?<=\\G.{4})|(?<=\\G.{3})");
$24 ==> String[10] { "011", "000", "011", "000", "011", "001", "100", "001", "100", "00" }
O
jshell> "01100001100001100110000110000".split("(?<=\\G.{4}|\\G.{3})");
$25 ==> String[10] { "011", "000", "011", "000", "011", "001", "100", "001", "100", "00" }
Intentado diferentes maneras, pero no no resuelto mi problema. También en Internet no encontrar solución.
Mi pregunta es que es la forma de resolver este problema. Gracias.
Primero, podría romper la cadena en subcadenas de longitud 7 y procesar cada una de estas subseries mediante su división después de los 4 dígitos:
String string = "01100001100001100110000110000";
String[] array = string.split("(?<=\\G.{7})");
String[] array2= new String[array.length*2];
for(int i = 0; i < array.length; i++) {
String[] temp = array[i].split("(?<=\\G.{4})");
array2[i*2] = temp[0];
if (temp.length > 1) {
array2[i*2+1]= temp[1];
}
}
Por supuesto, es posible que desee añadir un poco de matemáticas adicionales para saltar el último "nulo"
array2 ==> String[10] { "0110", "000", "1100", "001", "1001", "100", "0011", "000", "0", null }