-1

カスタムパーサーを作成するために必要な文字列がありますが、これをどのように解析できるかを中かっこで囲んでいます...。

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

ここに2つのフィールドがあります:

  1. PrimaryPIN
  2. IsValidUser

私はそれを分割して配列に入れるというアイデアを思いつきましたが、それは良い考えではないので、私に価値を与えることができる2つの配列を作成する方法を教えてください、PrimaryPINそしてIsValidUserこれについて私を助けてください。...。

4

2 に答える 2

3

PrimaryPinandの簡単なパーサーは次の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のソリューションに基づく別のソリューションですが、反復は1回です。

    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 に答える