如何在字符串中提取更多对 "Key = val_1,...,val_n"?

How can i extract more couples of "Key = val_1,...,val_n" in a String?

我需要解决一个问题。我有一个不总是相同顺序的“规则”字符串,我应该提取每个键的键和 value/s 。 我的 Key/Value 分隔符是字符“=”,而不同的分隔符是字符“;”。
该字符串由“Key_1 = Value_1, ... , Value_n; Key_2 = Value_1, ... , Value_n; 组成; ".

我的字符串示例是:

1) "Role = Student, Professor; HourFrom = 10:30; HourTo = 13:30;"
2) "HourFrom = 10:00; HourTo = 20:00;"
3) "Role = Professor; DayOfTheWeek = Monday, Friday;"
4) "DateFrom = 20/07/2020; DateTo = 19/08/2020;"

可能性如此之多,我的字符串的可能键是:Role、HourFrom、HourTo、DateFrom、DateTo、DayOfTheWeek。我想我有类似 2^n 的组合,有 n 个键。

我真的快疯了,因为我没有字符串顺序,所以我不知道如何解决这个问题。希望大家能帮帮我,先谢谢了。

您可以使用“;”拆分和“:”在像这样将值放入地图后:

    String input1 = "Role = Student, Professor; HourFrom = 10:30; HourTo = 13:30;";

    String[] input = input1.split(";");
    Map<String,String> output = new HashMap<>();
    for (String s:input ){
        String[] value = s.split("=");
        if(value.length == 2) {
            output.put(value[0],value[1]);
        }else if (value.length == 1){
            output.put(value[0],null);
        }
    }
    output.entrySet().forEach(entry->{
        System.out.println("{"+entry.getKey() + " = " + entry.getValue()+"}");
    });

结果:

{ HourFrom = 10:30} { HourTo = 13:30} {角色 = 学生、教授}