gpt4 book ai didi

java - useDelimiter 扫描重复数据

转载 作者:行者123 更新时间:2023-12-02 10:39:52 25 4
gpt4 key购买 nike

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

示例文本,

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

    Scanner sc1 = new Scanner(file).useDelimiter("a:1,");
(mapping code)
Scanner sc2 = new Scanner(sc1.next()).useDelimiter("b:2,");
(mapping code)
Scanner sc3 = new Scanner(sc2.next()).useDelimiter("c:3,");
(mapping code).......

Scanner sc3 = new Scanner(sc2.next()).useDelimiter("a:1,");

使用相同模式后,无法读取数据。尝试使用正则表达式读取字符串一次。没用。

最佳答案

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

    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)

关于java - useDelimiter 扫描重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com