I tiene una cadena de que consiste en parámetros separados por el espacio de la forma:
Reference=R1,R2 GroupId=G01 Date=12/02/2017 15:25.
Tengo que dividir la cadena de tal manera que el lado izquierdo de la '=' token es clave y el otro a la derecha es el valor que se almacena en un mapa. P.ej.
Key Value
Reference R1,R2
GroupId G01
Date 12/02/2017 15.25
Yo probé división de la cadena mediante el uso de String.split (" "), pero el parámetro de fecha tiene un espacio entre la fecha y la hora que se perturbe la disposición.
Podemos tratar de división en el siguiente patrón de expresión:
\s+(?=[^=]+=)
Este dice que dividir en cualquier cantidad de espacios en blanco, que es seguida inmediatamente por una tecla más =
. Tenga en cuenta que esta división no no consume nada más que el espacio en blanco de separación, resultando claves con los valores intactos.
Map<String, String> map = new HashMap<>();
String input = "Reference=R1,R2 GroupId=G01 Date=12/02/2017 15:25";
String[] parts = input.split("\\s+(?=[^=]+=)");
for (String part : parts) {
map.put(part.split("=")[0], part.split("=")[1]);
System.out.println(part);
}
Este salidas:
Reference=R1,R2
GroupId=G01
Date=12/02/2017 15:25
El único paso adicional no me explícitamente aquí el test es la generación del mapa con sus claves y valores.