Вернуть все вхождения подстроки
У меня есть следующее строковое значение;
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