如何从Java Stream获取以该数字开头的每个数字的数字?

问题描述 投票:1回答:1

我给了一个包含数字和单词的文字。

如何从每个数字中获取以该数字开头的文本中的数字?

我想在这里使用Java Streams。

我设法过滤所有数字:

Files.lines(Paths.get("/path/to/file/text.txt"))
     .filter(Pattern.compile("\\d+").asPredicate())

但这是艰难的部分。如何计算每个数字以它开头的数字?

java text java-stream text-processing
1个回答
3
投票

您可以在过滤后按初始字符分组,并将数据放入Map<Character,Integer>

Map<Character,Integer> digCount = Files
    .lines(Paths.get("/path/to/file/text.txt"))
    .filter(Pattern.compile("\\d+").asPredicate())
    .collect(Collectors.groupingBy(s -> s.charAt(0), Collectors.summingInt(s->1)));
for (Map.Entry<Character,Integer> e : digCount.entrySet()) {
    System.out.println(e.getKey()+" "+e.getValue());
}

Demo.

© www.soinside.com 2019 - 2024. All rights reserved.