-1

我有我需要制作自定义解析器的字符串,但我被困在大括号中,我该如何解析这个......

[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]

这是两个字段:

  1. 主要密码
  2. 是有效用户

我有想法通过拆分将它放入数组中,但这不是一个好主意,所以你能告诉我如何制作两个可以给我价值的数组,PrimaryPINIsValidUser帮助我解决这个问题。... .

4

2 回答 2

3

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);
    }
于 2012-05-23T11:17:07.767 回答
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)));
    }
于 2012-05-23T11:50:01.240 回答