解析问题

时间:2012-05-23 11:02:03

标签: java android

我有字符串,我需要自定义解析器但我被困在括号中,我怎么能解析这个......

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

这里有两个字段:

  1. PrimaryPIN
  2. IsValidUser
  3. 我有想法让它在数组中分裂,但这不是一个好主意所以你能告诉我如何制作两个可以给我价值PrimaryPINIsValidUser的数组请帮助我就此而言。 ......。

2 个答案:

答案 0 :(得分:3)

以下是PrimaryPinIsValidUser的简单解析器:

    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)));
    }