Вернуть все вхождения подстроки

У меня есть следующее строковое значение;

 String value = "col = at, ud = sam, col = me, od = tt, col = fg";

Мне нужно вернуть только col = при col = me и col = fg;

Я знаю, что мог бы использовать:

value.substring(0, value.indexOf(",")

вернуть col = at, но я не уверен, как получить все три. Спасибо за любую помощь.

1 ответ

Решение

Это может быть достигнуто с помощью потоков:

List<String> results = Arrays.stream(value.split(","))
.map(String::trim)
.filter(val-> !val.isEmpty() && val.startsWith("col ="))
.collect(Collectors.toList())

Вы также можете использовать регулярное выражение:

String value = "col = at, ud = sam, col = me, od = tt, col = fg";

Pattern pattern = Pattern.compile("col\\s+=\\s+\\w++");

List<String> allMatches = new ArrayList<String>();
Matcher m = pattern.matcher(value);
while (m.find()) {
   allMatches.add(m.group());
}
allMatches.forEach(System.out::print); 

Выход:

col = at col = me col = fg

Другие вопросы по тегам