【发布时间】:2019-05-14 09:47:26
【问题描述】:
我尝试将 args 转换为流。然后必须将流设为大写,从字符串(而不是整个字符串)中删除数字和空格。 创建流和大写成功,现在我被过滤器方法卡住了,我不明白为什么我的代码不起作用,也已经做了一些研究。
package A_11;
import java.util.Arrays;
import java.util.stream.Stream;
public class A_11_g {
public static void main(String[] args){
Stream<String> stream = Arrays.stream(args);
stream.map(s -> s.toUpperCase()).filter(s -> Character.isDigit(s)).filter(e -> !e.isEmpty())
.forEach(name -> System.out.print(name + " "));
}
}
【问题讨论】:
-
当您说过滤器时,您的意思是要从提供的字符串中删除数字和空格,还是要删除包含数字/空格的任何字符串?
-
我想从流中删除数字和空格,我认为 filter 是用于此目的的正确方法
-
您拥有的是
Stream<String>,您想完全删除带有条件或字符的字符串吗?虽然您可能正在寻找stream.map(String::toUpperCase) .filter(s -> !StringUtils.isNumeric(s) || !s.isEmpty()) .forEach(name -> System.out.print(name + " "));,而StringUtils来自 apache commons。 -
是的,但是从流中删除包含数字/空格的字符串,或者从流的字符串中删除数字/空格? Filter 是第一个,只有满足提供的 Predicate 时才会接受过滤 Stream 中的每个元素。
-
@FrancisDrake 您可能应该 edit 您的问题以明确要求(换句话说,将评论回复合并到问题本身中)。
标签: java arrays filter java-stream