首页 > 解决方案 > java - 如何在Java中按空格拆分字符串并以键值的形式存储?

问题描述

我有一个由空格分隔的参数组成的字符串,格式如下:

Reference=R1,R2 GroupId=G01 Date=12/02/2017 15:25.

我需要以这样一种方式拆分字符串,即“=”标记的左侧是键,右侧是将存储在地图中的值。例如。

Key         Value
Reference    R1,R2
GroupId      G01
Date         12/02/2017 15.25

我确实尝试使用 String.split(" ") 拆分字符串,但日期参数在日期和时间之间有一个空格,这会干扰安排。

标签: javastringsplitdelimiter

解决方案


我们可以尝试拆分以下正则表达式模式:

\s+(?=[^=]+=)

这表示要拆分任意数量的空格,然后紧跟一个键 plus =。请注意,除了分隔空格之外,此拆分不消耗任何内容,从而生成具有完整值的键

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);
}

这输出:

Reference=R1,R2
GroupId=G01
Date=12/02/2017 15:25

我在这里没有明确测试的唯一额外步骤是生成带有键和值的映射。


推荐阅读