Java 8中单行代码实现字符串分割、过滤和连接

5
我有一个字符串,我想按逗号分割并检查每个单词中是否包含特定的单词,然后修剪并连接它们以创建新的字符串。
输入:
"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(",");

似乎它并没有起作用,有更好的解决方法吗? - user1614862
"did not seem to work mean"是什么意思? - Giacomo Alzetta
1个回答

8
你必须在此处使用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(","));

我还需要对每一个进行修剪。 - user1614862

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接