我收到以下服务的响应。如何将其解析为Map
?我首先想到在空白处分割,但它不起作用,因为该值可能包含空格,例如看看的价值SA键入以下响应。
我想到的一种选择是在空白处分割provided前面的字符是双引号。但不知道如何为此编写正则表达式。
TX="0000000000108000001830001" FI="" OS="8" CI="QU01SF1S2032" AW="SSS" SA="1525 迎风大厅"
按引号解析。您甚至可以使用正则表达式来查找每个键/值对,假设每个值都在引号中。我唯一的问题是,如果值包含嵌入引号,则规则是什么? (它们是否使用“\”之类的转义?无论如何,这目前在下面没有考虑到......)
例如:
(\w+)="([^"]*)"
这甚至会给你组 #1 和 #2,可分别用于提供键和值。
使用 Java 循环运行它Matcher.find()
方法,直到找到所有对。
示例代码:
String input = "TX=\"0000000000108000001830001\" FI=\"\" OS=\"8\" CI=\"QU01SF1S2032\" AW=\"SSS\" SA=\"1525 Windward Concourse\"";
Pattern p = Pattern.compile("\\s*(\\w+)=\"([^\"]*)\"\\s*");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
Output:
TX
0000000000108000001830001
FI
OS
8
CI
QU01SF1S2032
AW
SSS
SA
1525 Windward Concourse
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)