我有我需要制作自定义解析器的字符串,但我被困在大括号中,我该如何解析这个......
[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]
这是两个字段:
- 主要密码
- 是有效用户
我有想法通过拆分将它放入数组中,但这不是一个好主意,所以你能告诉我如何制作两个可以给我价值的数组,PrimaryPIN请IsValidUser帮助我解决这个问题。... .
PrimaryPin这是and的简单解析器IsValidUser:
String s = "[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]";
Pattern pinPattern = Pattern.compile("PrimaryPIN=([0-9]*);");
Pattern vuPattern = Pattern.compile("IsValidUser=([^;]*);");
ArrayList<String> pins = new ArrayList<String>();
ArrayList<Boolean> validUser = new ArrayList<Boolean>();
Matcher m = pinPattern.matcher(s);
while (m.find()) {
pins.add(m.group(1));
}
m = vuPattern.matcher(s);
while (m.find()) {
validUser.add("true".equals(m.group(1))?true:false);
}
另一个基于@Paweł Nadolski 解决方案的解决方案,但只有一次迭代:
String s = "[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]";
Pattern pinPattern = Pattern.compile("PrimaryPIN=([0-9]*); IsValidUser=(true|false);");
Map<String, Boolean> pins = new HashMap<String, Boolean>();
Matcher m = pinPattern.matcher(s);
while (m.find()) {
pins.put(m.group(1), new Boolean(m.group(2)));
}