Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析问题_Java_Android - Fatal编程技术网

Java 解析问题

Java 解析问题,java,android,Java,Android,我有一个字符串,我需要自定义解析器,但我被困在大括号里,我怎么能解析这个 [TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }] 这里有两个字段: PrimaryPIN 伊斯瓦利杜瑟 我想用split将其放入数组中,但这不是一个好主意,所以你能告诉我如何制作两个数组,可以给我PrimaryPIN和IsValidUser的值请帮助我 这里有一个简单的PrimaryPin

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

[TPIN{PrimaryPIN=6152987; IsValidUser=true; }, TPIN{PrimaryPIN=794032; IsValidUser=true; }]
这里有两个字段:

PrimaryPIN 伊斯瓦利杜瑟
我想用split将其放入数组中,但这不是一个好主意,所以你能告诉我如何制作两个数组,可以给我PrimaryPIN和IsValidUser的值请帮助我

这里有一个简单的PrimaryPin和IsValidUser解析器:


另一个解决方案基于@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)));
    }

@user1381267将PrimaryPIN=[0-9]*替换为IsValidUser=true | false你能给我一个真正的解决方案吗?这个解决方案适用于整个应用程序,因为这是针对单个字符串和simepl数据的,未来它将增加更多,数据将更复杂,所以你能给出一些看起来像解析器的解决方案吗
    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)));
    }