Разделение строк, фильтрация и объединение в одну строку Java 8 - PullRequest
6 голосов
/ 07 ноября 2019

У меня есть строка, которую я хотел бы разделить запятыми и проверить для каждого слова определенное слово, а затем обрезать, а затем соединить его, чтобы создать новую строку

Ввод:

"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(",");

1 Ответ

8 голосов
/ 07 ноября 2019

Вы должны использовать 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(","));
...