Вы можете использовать Pattern
:
static final Pattern pattern = Pattern.compile("c|f");
и затем проверить, соответствует ли строка указанному шаблону.
List<String> strings = filteredStrings.stream()
.filter(s -> pattern.matcher(s).find())
.collect(Collectors.toList());
То, что pattern
, конечно, может быть вычислено с помощьюзаданный вход:
public static Pattern compute(String... words) {
StringBuilder pattern = new StringBuilder();
for(int i = words.length - 1; i >= 0; i++) {
pattern.append(words[i]);
if(i != 0) {
pattern.append('|');
}
}
return Pattern.compile(pattern);
}
Который затем можно было бы назвать так:
Pattern patten = compute("some", "words", "hello", "world");
Что привело бы к регулярному выражению:
some|words|hello|world