useDelimiter扫描仪用于重复数据

时间:2018-10-25 18:37:39

标签: java

从文本文件读取数据时遇到问题。我正在使用useDelimiter将字符串的一部分存储到地图中。我使用的模式将在文件中稍后重复,并且扫描仪将不会进一步读取。

示例文字

a:1,(值),b:2,(值),c:3,(值),d:4,(值),e:5,(值),a:1,(值) ,b:2,(values)...........

cout <<"Enter the number of players:";
  cin >> numOfPlayers;
  //between 2-8 ? how
  for (int i=0; i<numOfPlayers; i++)
  {
    Player player[i]; 
  }

使用相同的模式后不读取数据。试图使用正则表达式一次读取字符串。没有用

1 个答案:

答案 0 :(得分:1)

将分隔符设置为所需的正则表达式。扫描程序无法直接访问定界符匹配,但是您可以通过子字符串来获取它。然后只需根据需要使用键/值即可。

    String text = "a:1, (values:a1), b:2, (values:b2), c:3, (values:c3), a:1, (values:a1), b:2, (values:b2)";
    Scanner scanner = new Scanner(text).useDelimiter("[a-z]:[0-9]+, ");

    int previous = 0;
    while (scanner.hasNext()) {
        String value = scanner.next();

        MatchResult match = scanner.match();
        String key = text.substring(previous, match.start());
        previous = match.end();

        System.out.println(key);
        System.out.println(value);
    }

输出:

a:1, 
(values:a1), 
b:2, 
(values:b2), 
c:3, 
(values:c3)
a:1, 
(values:a1), 
b:2, 
(values:b2)