Cómo dividir una cadena por el espacio y almacenar en forma de valor clave en el mapa en Java?

user3628645:

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.

Tim Biegeleisen:

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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239316&siteId=1
Recomendado
Clasificación