我正在学习使用stream,并尝试在一个没有scanner.hasnext()的文件中获取所有包含元音且单词长度大于4的单词。
以文件为例,我想编写如下代码
Stream<String> text = Files.lines(Paths.get(example.txt));
List<String> result = text.filter(w->w.length()>4)
.filter(w -> w.contains("a")||w.contains("e")||
w.contains("i")||w.contains("o")||w.contains("u")).collect(Collectors.toList());
System.out.println(result);
我想得到的结果是
There bunch vowels example vowel
但它返回与文本相同的字符串。
我只知道使用stream逐行读取文本文件,但我想让它逐字读取(或者从每行中分割字符串)
有人能帮帮我吗?
1条答案
按热度按时间ogsagwnx1#
你可以试试下面的代码片段
正则表达式拆分单词:
"\\W+"
:一个或多个非单词字符序列。注:
这种方法的问题在于
foo'sbar
将被分成两个单词foo
以及sbar
. 如果你想排除'
作为拆分器,可以使用[\W&&[^']]+
. 请以这种方式在表达式中包含所有有效字符。输出: