如何在字符串中提取更多对“key=valu 1,…,valu n”?

j8ag8udp  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(306)

我需要解决一个问题。我有一个“规则”字符串,它的顺序并不总是相同的,我应该提取每个键的键和值。我的键/值分隔符是char“=”,而不同的分隔符是char“;”。
此字符串由“key_1=value_1,…”,价值观;键2=值1,“值”。
我的字符串示例如下:

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、dayofweek。我想我有2^n个组合,有n个键。
我真的疯了,因为我没有一个字符串顺序,所以我不知道如何解决这个问题。希望你们能帮助我,所以提前谢谢你们。

5cnsuln7

5cnsuln71#

您可以使用“按”;“拆分”和“:”将值放入这样的Map后:

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}{role=student,professor}

相关问题