从文本文件读取数据时遇到问题。我正在使用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];
}
使用相同的模式后不读取数据。试图使用正则表达式一次读取字符串。没有用
答案 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)