我有字符串,我需要自定义解析器但我被困在括号中,我怎么能解析这个......
[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]
这里有两个字段:
我有想法让它在数组中分裂,但这不是一个好主意所以你能告诉我如何制作两个可以给我价值PrimaryPIN
和IsValidUser
的数组请帮助我就此而言。 ......。
答案 0 :(得分:3)
以下是PrimaryPin
和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);
}
答案 1 :(得分:0)
基于@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)));
}