Guava MapSplitter提取键值对,其值可以包含外层分割符

Guava MapSplitter to extract key-value pairs whose value can contain outer split character

使用 Guava 库,如果我想从字符串中提取键值对(示例如下)

id=1234 name="Amy Winehouse" age=27

哪里

如何创建这样的 MapSplitter

这样做就可以了:

    String input = "id=1234 name=Amy fullname=\"Amy Winehouse\" age=27";

    Map<String, String> result = Splitter.onPattern("\s(?=([^\\"]*\\"[^\\"]*\\")*[^\\"]*$)")
            .withKeyValueSeparator(Splitter.onPattern("="))
            .split(input);

输出:

{id=1234, name=Amy, fullname="Amy Winehouse", age=27}