首页 > 解决方案 > 字符串拆分,过滤和加入单行java 8

问题描述

我有字符串,我想用逗号分隔并检查每个字符串中的特定单词,然后修剪然后加入它以创建新字符串

输入:

"UC_Admin, Internal, UC_Reg, US_Admin"

期望的输出:

 "UC_Admin,UC_Reg"

我尝试的是:

Arrays.stream("UC_Admin,Internal,UC_Reg,US_Admin".split(","))
      .filter(role -> role.contains("UC").join(",");

标签: javastringjava-8java-stream

解决方案


你必须在Collectors.joining(",")这里使用。另请注意,对于修剪操作,您只能使用map运算符。

String result = Arrays.stream("UC_Admin,Internal,UC_Reg,US_Admin".split(","))
    .filter(role -> role.contains("UC"))
    .map(String::trim).collect(Collectors.joining(","));

下面给出了一个更好的方法。对于大型数据集,这应该优于以前的解决方案。但是,我没有进行任何基准测试来证明这一点。

private static final Pattern COMMA = Pattern.compile(",");

String result = COMMA.splitAsStream("UC_Admin,Internal,UC_Reg,US_Admin")
    .filter(role -> role.contains("UC"))
    .map(String::trim)
    .collect(Collectors.joining(","));

推荐阅读