Guava MapSplitter提取键值对,其值可以包含外层分割符
Guava MapSplitter to extract key-value pairs whose value can contain outer split character
使用 Guava 库,如果我想从字符串中提取键值对(示例如下)
id=1234 name="Amy Winehouse" age=27
哪里
- 键的值可以包含外部拆分字符,即name key Amy Winehouse 的值包含样本中的 space 字符.
- 包含外层分割字符的值用另一个字符包裹,双引号包裹name键的值在样本.
如何创建这样的 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}
使用 Guava 库,如果我想从字符串中提取键值对(示例如下)
id=1234 name="Amy Winehouse" age=27
哪里
- 键的值可以包含外部拆分字符,即name key Amy Winehouse 的值包含样本中的 space 字符.
- 包含外层分割字符的值用另一个字符包裹,双引号包裹name键的值在样本.
如何创建这样的 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}